<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><title> </title><meta name="generator" content="StarOffice/OpenOffice.org XSLT (http://xml.openoffice.org/sx2ml)" /><meta name="author" content="Greg Hendricks" /><meta name="created" content="2007-02-26T14:35:59" /><meta name="changedby" content="Greg Hendricks" /><meta name="changed" content="2008-03-03T16:40:48" /><base href="." /><style type="text/css">
	@page { size: 8.5inch 11inch; margin-top: 1inch; margin-bottom: 1inch; margin-left: 1inch; margin-right: 1inch }
	table { border-collapse:collapse; border-spacing:0; empty-cells:show }
	td, th { vertical-align:top; }
	h1, h2, h3, h4, h5, h6 { clear:both }
	ol, ul { padding:0; }
	* { margin:0; }
	*.fr1 { font-size:12pt; vertical-align:top; }
	*.fr2 { font-size:12pt; vertical-align:top; text-align:center; }
	*.fr3 { font-size:12pt; vertical-align:top; }
	*.fr4 { font-size:12pt; vertical-align:middle; text-align:center; }
	*.Graphics { font-size:12pt; vertical-align:top; text-align:center; }
	*.Caption { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0.0835in; margin-bottom:0.0835in; font-style:italic; }
	*.Contents1 { font-family:'Thorndale AMT'; font-size:12pt; margin-left:0in; margin-right:0in; text-indent:0inch; }
	*.Contents2 { font-family:'Thorndale AMT'; font-size:12pt; margin-left:0.1965in; margin-right:0in; text-indent:0inch; }
	*.Contents3 { font-family:'Thorndale AMT'; font-size:12pt; margin-left:0.3929in; margin-right:0in; text-indent:0inch; }
	*.Contents4 { font-family:'Thorndale AMT'; font-size:12pt; margin-left:0.5898in; margin-right:0in; text-indent:0inch; }
	*.Contents5 { font-family:'Thorndale AMT'; font-size:12pt; margin-left:0.7862in; margin-right:0in; text-indent:0inch; }
	*.Contents8 { font-family:'Thorndale AMT'; font-size:12pt; margin-left:1.3756in; margin-right:0in; text-indent:0inch; }
	*.Contents9 { font-family:'Thorndale AMT'; font-size:12pt; margin-left:1.572in; margin-right:0in; text-indent:0inch; }
	*.ContentsHeading { font-family:'Albany AMT'; font-size:16pt; margin-top:0.1665in; margin-bottom:0.0835in; margin-left:0in; margin-right:0in; text-indent:0inch; font-weight:bold; }
	*.Definition { font-family:'Thorndale AMT'; font-size:14pt; font-style:italic; font-weight:bold; }
	*.Footer { font-family:'Thorndale AMT'; font-size:12pt; }
	*.Header { font-family:'Thorndale AMT'; font-size:12pt; }
	*.Heading { font-family:'Albany AMT'; font-size:14pt; margin-top:0.1665in; margin-bottom:0.0835in; }
	*.Heading1 { font-family:'Albany AMT'; font-size:115%; margin-top:0.1665in; margin-bottom:0.0835in; font-weight:bold; }
	*.Heading2 { font-family:'Albany AMT'; font-size:14pt; margin-top:0.1665in; margin-bottom:0.0835in; font-style:italic; font-weight:bold; }
	*.Heading3 { font-family:'Albany AMT'; font-size:14pt; margin-top:0.1665in; margin-bottom:0.0835in; font-weight:bold; }
	*.Heading4 { font-family:'Albany AMT'; font-size:85%; margin-top:0.1665in; margin-bottom:0.0835in; font-style:italic; font-weight:bold; }
	*.Heading5 { font-family:'Albany AMT'; font-size:85%; margin-top:0.1665in; margin-bottom:0.0835in; font-weight:bold; }
	*.Heading8 { font-family:'Albany AMT'; font-size:75%; margin-top:0.1665in; margin-bottom:0.0835in; font-weight:bold; }
	*.Heading9 { font-family:'Albany AMT'; font-size:75%; margin-top:0.1665in; margin-bottom:0.0835in; font-weight:bold; }
	*.Index { font-family:'Thorndale AMT'; font-size:12pt; }
	*.List { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.List1End { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.1665in; margin-left:0.25in; margin-right:0in; text-indent:-0.25inch; }
	*.List1Start { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0.1665in; margin-bottom:0.0835in; margin-left:0.25in; margin-right:0in; text-indent:-0.25inch; }
	*.ListContents { font-family:'Thorndale AMT'; font-size:12pt; margin-left:0.3937in; margin-right:0in; text-indent:0inch; }
	*.ListHeading { font-family:'Thorndale AMT'; font-size:12pt; margin-left:0in; margin-right:0in; text-indent:0inch; }
	*.P1 { font-family:'Thorndale AMT'; font-size:20pt; text-align:center ! important; font-weight:bold; }
	*.P10 { font-family:'Thorndale AMT'; font-size:12pt; margin-left:1.572in; margin-right:0in; text-indent:0inch; }
	*.P100 { font-family:'Thorndale AMT'; font-size:12pt; }
	*.P101 { font-family:'Thorndale AMT'; font-size:12pt; }
	*.P102 { font-family:'Thorndale AMT'; font-size:12pt; }
	*.P103 { font-family:'Thorndale AMT'; font-size:12pt; }
	*.P104 { font-family:'Thorndale AMT'; font-size:12pt; }
	*.P105 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.1965in; }
	*.P106 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.1965in; }
	*.P107 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.1965in; }
	*.P108 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.1965in; }
	*.P109 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.1965in; }
	*.P11 { font-family:'Thorndale AMT'; font-size:12pt; margin-left:0.3929in; margin-right:0in; text-indent:0inch; }
	*.P110 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.1965in; }
	*.P111 { font-family:'Albany AMT'; font-size:16pt; margin-top:0.1665in; margin-bottom:0.0835in; margin-left:0in; margin-right:0in; text-indent:0inch; font-weight:bold; }
	*.P12 { font-family:'Thorndale AMT'; font-size:12pt; margin-left:0.5898in; margin-right:0in; text-indent:0inch; }
	*.P13 { font-family:'Albany AMT'; font-size:115%; margin-top:0.1665in; margin-bottom:0.0835in; font-weight:bold; }
	*.P14 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P15 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; font-weight:bold; }
	*.P16 { font-family:'Thorndale AMT'; font-size:12pt; margin-left:0in; margin-right:0.3937in; margin-top:0in; margin-bottom:0.1965in; text-indent:0inch; }
	*.P17 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P18 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; font-weight:normal; }
	*.P19 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; font-style:normal; }
	*.P2 { font-family:'Thorndale AMT'; font-size:12pt; text-align:center ! important; }
	*.P20 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; font-weight:normal; }
	*.P21 { font-family:'Albany AMT'; font-size:11.8999996185303pt; margin-top:0.1665in; margin-bottom:0.0835in; font-weight:bold; }
	*.P22 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.1965in; }
	*.P23 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.1965in; text-align:left ! important; }
	*.P24 { font-family:'Thorndale AMT'; font-size:12pt; margin-left:0.3937in; margin-right:0in; text-indent:0inch; margin-top:0in; margin-bottom:0.1965in; }
	*.P25 { font-family:'Albany AMT'; font-size:14pt; margin-top:0.1665in; margin-bottom:0.0835in; font-style:italic; font-weight:bold; }
	*.P26 { font-family:'Albany AMT'; font-size:75%; margin-top:0.1665in; margin-bottom:0.0835in; font-weight:bold; font-style:italic; }
	*.P27 { font-family:'Thorndale AMT'; font-size:12pt; margin-left:0.2945in; margin-right:0in; text-indent:0inch; }
	*.P28 { font-family:'Thorndale AMT'; font-size:20pt; text-align:center ! important; font-weight:bold; }
	*.P29 { font-family:'Thorndale AMT'; font-size:12pt; font-weight:bold; }
	*.P3 { font-family:'Thorndale AMT'; font-size:12pt; text-align:left ! important; }
	*.P30 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P31 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P32 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P33 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P34 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P35 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P36 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P37 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P38 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P39 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P4 { font-family:'Thorndale AMT'; font-size:12pt; text-align:left ! important; }
	*.P40 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P41 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P42 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P43 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; font-weight:normal; }
	*.P44 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; font-weight:normal; }
	*.P45 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; font-weight:normal; }
	*.P46 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; font-weight:normal; }
	*.P47 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; font-weight:normal; }
	*.P48 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; font-weight:normal; }
	*.P49 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; font-weight:normal; }
	*.P5 { font-family:'Thorndale AMT'; font-weight:bold; font-size:12pt; }
	*.P50 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P51 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P52 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P53 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P54 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P55 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P56 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; font-weight:normal; }
	*.P57 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; font-weight:normal; }
	*.P58 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; font-weight:normal; }
	*.P59 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; font-weight:normal; }
	*.P6 { font-family:'Thorndale AMT'; font-size:12pt; margin-left:0in; margin-right:0in; text-indent:0inch; }
	*.P60 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; font-weight:normal; }
	*.P61 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; font-weight:normal; }
	*.P62 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; font-weight:normal; }
	*.P63 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; font-weight:normal; }
	*.P64 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; font-weight:normal; }
	*.P65 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P66 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P67 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P68 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P69 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P7 { font-family:'Thorndale AMT'; font-size:12pt; margin-left:0.7862in; margin-right:0in; text-indent:0inch; }
	*.P70 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P71 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P72 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P73 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P74 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P75 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P76 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P77 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P78 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P79 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P8 { font-family:'Thorndale AMT'; font-size:12pt; margin-left:0.1965in; margin-right:0in; text-indent:0inch; }
	*.P80 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P81 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P82 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P83 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P84 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P85 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P86 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P87 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P88 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P89 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P9 { font-family:'Thorndale AMT'; font-size:12pt; margin-left:1.3756in; margin-right:0in; text-indent:0inch; }
	*.P90 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P91 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P92 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P93 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P94 { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.P95 { font-family:'Thorndale AMT'; font-size:12pt; }
	*.P96 { font-family:'Thorndale AMT'; font-size:12pt; }
	*.P97 { font-family:'Thorndale AMT'; font-size:12pt; }
	*.P98 { font-family:'Thorndale AMT'; font-size:12pt; }
	*.P99 { font-family:'Thorndale AMT'; font-size:12pt; }
	*.Quotations { font-family:'Thorndale AMT'; font-size:12pt; margin-left:0.3937in; margin-right:0.3937in; margin-top:0in; margin-bottom:0.1965in; text-indent:0inch; }
	*.Standard { font-family:'Thorndale AMT'; font-size:12pt; }
	*.TableContents { font-family:'Thorndale AMT'; font-size:12pt; }
	*.TableHeading { font-family:'Thorndale AMT'; font-size:12pt; text-align:center ! important; font-style:italic; font-weight:bold; }
	*.Textbody { font-family:'Thorndale AMT'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
	*.UserIndex5 { font-family:'Thorndale AMT'; font-size:12pt; margin-left:0.7862in; margin-right:0in; text-indent:0inch; }
	*.UserIndex9 { font-family:'Thorndale AMT'; font-size:12pt; margin-left:1.572in; margin-right:0in; text-indent:0inch; }
	*.Sect1 { }
	*.Table1 { width:4.6167in; }
	*.Table2 { width:6.5in; float:none; }
	*.Table1A1 { padding:0.0354in; border-left-width:0.0917cm; border-left-style:double; border-left-color:#808080; border-right-style:none; border-top-width:0.0917cm; border-top-style:double; border-top-color:#808080; border-bottom-width:0.0917cm; border-bottom-style:double; border-bottom-color:#808080; }
	*.Table1A2 { padding:0.0354in; border-left-width:0.0917cm; border-left-style:double; border-left-color:#808080; border-right-style:none; border-top-style:none; border-bottom-width:0.0917cm; border-bottom-style:double; border-bottom-color:#808080; }
	*.Table1B1 { padding:0.0354in; border-width:0.0917cm; border-style:double; border-color:#808080; }
	*.Table1B2 { padding:0.0354in; border-left-width:0.0917cm; border-left-style:double; border-left-color:#808080; border-right-width:0.0917cm; border-right-style:double; border-right-color:#808080; border-top-style:none; border-bottom-width:0.0917cm; border-bottom-style:double; border-bottom-color:#808080; }
	*.Table2A1 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
	*.Table2A2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
	*.Table2C1 { padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
	*.Table2C2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
	*.Table1A { width:2.3083in; }
	*.Table2A { width:1.1757in; }
	*.Table2B { width:1.259in; }
	*.Table2C { width:4.0646in; }
	*.BulletSymbols { font-family:StarSymbol; font-size:9pt; }
	*.Internetlink { color:#000080; text-decoration:underline; }
	*.NumberingSymbols { }
	*.SourceText { font-family:'Cumberland AMT'; }
	*.T1 { font-family:'Thorndale AMT'; }
	*.T10 { font-weight:bold; }
	*.T11 { font-style:italic; }
	*.T12 { font-style:normal; }
	*.T13 { font-style:normal; text-decoration:underline; }
	*.T14 { font-style:normal; }
	*.T15 { font-family:'Luxi Mono'; }
	*.T16 { font-family:'Thorndale AMT'; font-weight:bold; }
	*.T2 { font-weight:bold; }
	*.T3 { font-weight:bold; }
	*.T4 { font-weight:normal; }
	*.T5 { color:#000000; }
	*.T6 { text-decoration:underline; }
	*.T7 { font-weight:normal; text-decoration:underline; }
	*.T8 { font-weight:bold; text-decoration:underline; }
	*.T9 { }
	*.VisitedInternetLink { color:#800000; text-decoration:underline; }
	</style></head><body dir="ltr"><p class="P28"> </p><div class="P1"><img width="247" height="304" alt="" src="file:///home/ghendricks/workspace/bnc-3.0/testopia/doc/" class="fr1" /></div><p class="P1"> </p><p class="P1"> </p><p class="P1"> </p><p class="P1"> </p><p class="P1"> </p><p class="P1"> </p><p class="P1"> </p><p class="P1"> </p><p class="P1"> </p><p class="P1"> </p><p class="P1">Software Testing With Testopia </p><p class="P2">By Greg Hendricks </p><p class="P2"><a href="mailto:gregaryh@gmail.com">gregaryh@gmail.com</a></p><p class="P2"> </p><p class="P2"><a href="http://mozilla.org/projects/testopia">http://mozilla.org/projects/testopia</a></p><p class="Standard"> </p><p class="P111">Table of Contents </p><table border="0" cellspacing="0" cellpadding="0" class="P6"><colgroup><col style="width: 6.5in" /></colgroup><tr><td>Introduction</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Testopia - Test Case Management</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P8"><colgroup><col style="width: 6.3035in" /></colgroup><tr><td>Testopia and Bugzilla</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P8"><colgroup><col style="width: 6.3035in" /></colgroup><tr><td>The Mozilla Foundation and the Testopia Project</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P6"><colgroup><col style="width: 6.5in" /></colgroup><tr><td>Installation</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P8"><colgroup><col style="width: 6.3035in" /></colgroup><tr><td>Requirements at a Glance</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P9"><colgroup><col style="width: 5.1244in" /></colgroup><tr><td>   Recommended version Where to get it</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P10"><colgroup><col style="width: 4.928in" /></colgroup><tr><td>Database</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P10"><colgroup><col style="width: 4.928in" /></colgroup><tr><td>Additional Perl Modules</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P10"><colgroup><col style="width: 4.928in" /></colgroup><tr><td>Libraries</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P10"><colgroup><col style="width: 4.928in" /></colgroup><tr><td>Client</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P8"><colgroup><col style="width: 6.3035in" /></colgroup><tr><td>What You Need to Know</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P8"><colgroup><col style="width: 6.3035in" /></colgroup><tr><td>Downloading and Installing</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P8"><colgroup><col style="width: 6.3035in" /></colgroup><tr><td>Upgrading From Testopia 1.0.x</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P6"><colgroup><col style="width: 6.5in" /></colgroup><tr><td>Configuration</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P6"><colgroup><col style="width: 6.5in" /></colgroup><tr><td>Using Testopia</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P8"><colgroup><col style="width: 6.3035in" /></colgroup><tr><td>Why Test?</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P8"><colgroup><col style="width: 6.3035in" /></colgroup><tr><td>What Types of Testing can Testopia Help You With?</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P11"><colgroup><col style="width: 6.1071in" /></colgroup><tr><td>Black Box Testing</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P11"><colgroup><col style="width: 6.1071in" /></colgroup><tr><td>White box and Automated Testing</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P6"><colgroup><col style="width: 6.5in" /></colgroup><tr><td>Getting Started</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P11"><colgroup><col style="width: 6.1071in" /></colgroup><tr><td>The Big Picture</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P8"><colgroup><col style="width: 6.3035in" /></colgroup><tr><td>Test Plans</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P8"><colgroup><col style="width: 6.3035in" /></colgroup><tr><td>Test Cases</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P8"><colgroup><col style="width: 6.3035in" /></colgroup><tr><td>Test Runs</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P8"><colgroup><col style="width: 6.3035in" /></colgroup><tr><td>Test Run Environments</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P8"><colgroup><col style="width: 6.3035in" /></colgroup><tr><td>Builds</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P8"><colgroup><col style="width: 6.3035in" /></colgroup><tr><td>Test Case-Runs</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P6"><colgroup><col style="width: 6.5in" /></colgroup><tr><td>Testing In Testopia</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P8"><colgroup><col style="width: 6.3035in" /></colgroup><tr><td>Start With a Plan</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Viewing A Test Plan</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Attaching Files</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Editing Plan Fields</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Viewing Plan History</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P8"><colgroup><col style="width: 6.3035in" /></colgroup><tr><td>Adding Categories and Builds</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P6"><colgroup><col style="width: 6.5in" /></colgroup><tr><td>Creating Test Cases</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Shortcut – Creating a Test Case</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Adding and Removing Components and Tags</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Viewing Test Case-Run Results</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Attaching Files</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Attaching Bugs</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Editing Case Fields</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Test Case Dependencies</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P8"><colgroup><col style="width: 6.3035in" /></colgroup><tr><td>Creating Environments</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P11"><colgroup><col style="width: 6.1071in" /></colgroup><tr><td>Environment Administration</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P12"><colgroup><col style="width: 5.9102in" /></colgroup><tr><td>Categories</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P12"><colgroup><col style="width: 5.9102in" /></colgroup><tr><td>Elements</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P12"><colgroup><col style="width: 5.9102in" /></colgroup><tr><td>Properties</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P12"><colgroup><col style="width: 5.9102in" /></colgroup><tr><td>Property Values</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P8"><colgroup><col style="width: 6.3035in" /></colgroup><tr><td>Creating Your Environment</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P6"><colgroup><col style="width: 6.5in" /></colgroup><tr><td>Creating A Test Run</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Shortcut – Creating a Test Run</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Viewing Your Test Run </td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Adding Cases</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Editing Test Run Fields</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P6"><colgroup><col style="width: 6.5in" /></colgroup><tr><td>Running Your Tests</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Filtering Your Test Cases in a Run</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Sorting Test Cases</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Passing and Failing Test Cases</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Adding Notes</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Attaching Bugs</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Reassigning Tests</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Changing Build or Environment on a Test Case</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Classic View</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Deleting Case-Runs</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Updating Multiple Cases at Once</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Wrapping Up</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P6"><colgroup><col style="width: 6.5in" /></colgroup><tr><td>Getting Around Testopia</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P8"><colgroup><col style="width: 6.3035in" /></colgroup><tr><td>Searching</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Sorting Search Results</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Paging</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Batch Processing</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Saved Searches</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P8"><colgroup><col style="width: 6.3035in" /></colgroup><tr><td>Reporting</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Plan Reports</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P10"><colgroup><col style="width: 4.928in" /></colgroup><tr><td>Build Coverage Report</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P10"><colgroup><col style="width: 4.928in" /></colgroup><tr><td>Top Bugs</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P10"><colgroup><col style="width: 4.928in" /></colgroup><tr><td>Bugs Found In This Plan</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P10"><colgroup><col style="width: 4.928in" /></colgroup><tr><td>Printable Percentage Report</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Test Case Reports</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P10"><colgroup><col style="width: 4.928in" /></colgroup><tr><td>Estimated vs Actual Time</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P10"><colgroup><col style="width: 4.928in" /></colgroup><tr><td>Historic Status Breakdown</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P8"><colgroup><col style="width: 6.3035in" /></colgroup><tr><td>Cloning</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Cloning Test Plans</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Cloning Test Cases</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Cloning a Run</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P8"><colgroup><col style="width: 6.3035in" /></colgroup><tr><td>Deleting</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P10"><colgroup><col style="width: 4.928in" /></colgroup><tr><td>Test Cases</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P10"><colgroup><col style="width: 4.928in" /></colgroup><tr><td>Test Plans</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P10"><colgroup><col style="width: 4.928in" /></colgroup><tr><td>Test Runs</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P6"><colgroup><col style="width: 6.5in" /></colgroup><tr><td>Importing and Exporting</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Importing Test Cases</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P6"><colgroup><col style="width: 6.5in" /></colgroup><tr><td>Testopia Security</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P8"><colgroup><col style="width: 6.3035in" /></colgroup><tr><td>The Testers Group</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P8"><colgroup><col style="width: 6.3035in" /></colgroup><tr><td>Test Plan Access Control Lists</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>User Regular Expression</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Explicit Inclusion</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P8"><colgroup><col style="width: 6.3035in" /></colgroup><tr><td>Access Rights</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Read </td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Write </td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Delete </td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Admin </td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P6"><colgroup><col style="width: 6.5in" /></colgroup><tr><td>Tags</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Adding Tags to an Object</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P7"><colgroup><col style="width: 5.7138in" /></colgroup><tr><td>Viewing Tags</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P6"><colgroup><col style="width: 6.5in" /></colgroup><tr><td>Using Testopia With Automated Test Scripts</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P6"><colgroup><col style="width: 6.5in" /></colgroup><tr><td>Field Descriptions</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P11"><colgroup><col style="width: 6.1071in" /></colgroup><tr><td>Test Plans</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P11"><colgroup><col style="width: 6.1071in" /></colgroup><tr><td>Test Cases</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P11"><colgroup><col style="width: 6.1071in" /></colgroup><tr><td>Test Runs</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P11"><colgroup><col style="width: 6.1071in" /></colgroup><tr><td>Test Case-Runs</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P6"><colgroup><col style="width: 6.5in" /></colgroup><tr><td>Glossary</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P6"><colgroup><col style="width: 6.5in" /></colgroup><tr><td>Getting Help</td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="P6"><colgroup><col style="width: 6.5in" /></colgroup><tr><td>Bibliography</td></tr></table><h1 class="P13"><a name="Introduction" />Introduction</h1><p class="Textbody">Testing, especially software testing, can be a tedious and overwhelming task. Often there are many levels of testing requirements and many iterations during a project life cycle. Keeping track of the results of tests is important both to the customer, and the developer. Customers want to know that their requirements are being met and developers want to know if there are bugs that they missed. Testing is an important part of the software development process since “Software should be predictable and consistent, offering no surprises to users” (Meyers 2004, ch 1). </p><h5 class="Heading5"><a name="Testopia_-_Test_Case_Management" />Testopia - Test Case Management</h5><p class="Textbody">Test case management is the process of tracking test outcomes on a set of test cases for a given set of environments and development iterations. To do this effectively, an organizational structure needs to be set in place to track test cases and their outcomes in a given test scenario. Testopia was developed to provide a central repository for the collaborative efforts of distributed testers. It serves as both a test case repository and management system. Testopia is designed to meet the needs of software testers from all sizes of groups and organizations.  </p><p class="Textbody">Though Testopia was designed primarily for software testing, it can be used to track any type of test cases. Also, being open source, Testopia can be easily adapted to fit just about any testing model. </p><h2 class="Heading2"><a name="Testopia_and_Bugzilla" />Testopia and Bugzilla</h2><p class="Textbody">Mozilla's Bugzilla bug tracking system is one of the most popular open source issue tracking systems available. Bugzilla “provides an easy to use, easy to maintain and cost effective solution with a rich feature set that easily can compete with its proprietary counterparts” (Lohmeyer). </p><p class="Textbody">Test cases are, and should be, closely tied to defects. As defects are found, test cases should be written to verify that the defect is fixed in future releases. To this end Testopia was designed as an add-on extension to Bugzilla. This allows a single user experience and point of product management for both defect tracking and test case management. </p><h2 class="Heading2"><a name="The_Mozilla_Foundation_and_the_Testopia_Project" />The Mozilla Foundation and the Testopia Project</h2><p class="Textbody">Testopia began life as Bugzilla Testrunner. It was written by Maciej Maczynski in 2001 and later ownership passed to Ed Fuentetaja who passed development duties to Greg Hendricks in 2006. It was renamed Testopia in March 2006 prior to release of version 1.0 in May. It was adopted as a Mozilla project and now resides at <a href="http://mozilla.org/projects/testopia">http://mozilla.org/projects/testopia</a>.</p><p class="Textbody">Since May 2006, Testopia has been increasing in popularity among testers in the open source community as well as in other organizations. In a recent blog posting, Rosie Sherry, a respected software testing expert, states that “This is probably the most comprehensive open source test management system and once up and running provides everything needed of a test management system” (Sherry 2006). </p><h1 class="P13"><a name="Installation" />Installation</h1><h2 class="Heading2"><a name="Requirements_at_a_Glance" />Requirements at a Glance</h2><h8 class="Heading8"><a name="Recommended_versionWhere_to_get_it" />                        Recommended version        Where to get it</h8><p class="Textbody">Bugzilla                3.0.x                        <a href="http://bugzilla.org/downloads">http://bugzilla.org/downloads</a></p><h9 class="Heading9"><a name="Database" />Database</h9><p class="Textbody">MySQL                5.0                                <a href="http://mysql.com/">http://mysql.com</a></p><h9 class="Heading9"><a name="Additional_Perl_Modules" />Additional Perl Modules</h9><p class="Textbody">JSON                        1.14*                <a href="http://search.cpan.org/~makamaka/JSON-1.14/">http://search.cpan.org/~makamaka/JSON-1.14/</a></p><p class="Textbody">Text::Diff                                                <a href="http://cpan.org/">http://cpan.org</a></p><h9 class="Heading9"><a name="Libraries" />Libraries</h9><p class="Textbody">Ext JS toolkit                2.0.1                                <a href="http://extjs.com/">http://extjs.com</a> </p><h9 class="Heading9"><a name="Client" />Client</h9><p class="Textbody">Firefox                 2.0+                                <a href="http://getfirefox.com/">http://getfirefox.com</a></p><p class="Textbody"> </p><p class="Textbody">* Version 2.01 is not compatable. See bug 409309</p><h2 class="Heading2"><a name="What_You_Need_to_Know" />What You Need to Know</h2><p class="Textbody">As our development has moved forward, we have decided to try to keep abreast of the latest stable release from Bugzilla (currently 3.0.3). This gives us a stable code base to work from. Developing plugins or extensions for any software is like trying to hit a moving target. This decision allows us to focus our time more on releasing new features often and early rather than back porting. However, this means that most major feature will not be back ported to earlier versions unless and until we have time to do so. Anyone wishing to help in this effort is more than welcome. </p><p class="Textbody">Though Bugzilla officially supports MySQL and Postgres databases, Testopia has only been fully tested with MySQL. Patches are welcome to make Testopia more Postgres compliant. </p><p class="Textbody">Likewise, Testopia has only been thoroughly tested using Firefox browsers. This is not because we don't care about other browser platforms, but because we lack the time and resources to attempt thorough testing in other browsers. Testopia should run fine on most modern browsers.  If issues arise however, please log them at bugzilla.mozilla.org </p><p class="Textbody">Testopia makes use of some cutting edge AJAX technology provided by the Ext Javascript toolkit. Our philosophy is that it is better to focus more processing on the client than to tie up the server. Ext places some extra weight on the client, but makes interactions with the server faster. This increases the load on the client machine however, which means the need for faster processing power and more memory. Trying to access Testopia on a Pentium 2 with 128 MB of RAM will probably not be the best user experience.  </p><h2 class="Heading2"><a name="Downloading_and_Installing" />Downloading and Installing</h2><p class="Textbody">Testopia is an extension to Bugzilla. It goes without saying then that you should have Bugzilla up and running first. Instructions for installing Bugzilla can be found at <a href="http://bugzilla.org/">http://bugzilla.org</a> as well as in the package you downloaded. Basically all you need is to unzip the package and run checksetup.pl and follow any instructions that come up.</p><p class="Textbody">Once you have Bugzilla successfully installed you need to do the following to get Testopia up and running: </p><ol style="margin-left:1.25cm;list-style-type:decimal; "><li class="P30" style="margin-left:0cm;"><p class="P30" style="margin-left:0.25cm;">Download the testopia tarball from ftp://ftp.mozilla.org </p></li><li class="P30" style="margin-left:0cm;"><p class="P30" style="margin-left:0.25cm;">Copy the testopia tar ball into your bugzilla's root directory. </p></li><li class="P30" style="margin-left:0cm;"><p class="P30" style="margin-left:0.25cm;">Untar  </p><ol style="margin-left:0.75cm;list-style-type:decimal; "><li class="P30" style="margin-left:0cm;"><p class="P30" style="margin-left:0.25cm;"><span class="SourceText">tar xzvf testopia-&lt;release&gt;.tar.gz</span></p></li></ol></li><li class="P30" style="margin-left:0cm;"><p class="P30" style="margin-left:0.25cm;">Apply the required patches: </p><ol style="margin-left:0.75cm;list-style-type:decimal; "><li class="P30" style="margin-left:0cm;"><p class="P30" style="margin-left:0.25cm;"><span class="SourceText">patch -p0 -i testopia/patch-3.0</span></p><p class="P30" style="margin-left:0.25cm;"><span class="SourceText">or</span></p><p class="P30" style="margin-left:0.25cm;"><span class="SourceText">patch -p0 -i testopia/patch-3.0.x</span></p></li></ol></li><li class="P30" style="margin-left:0cm;"><p class="P30" style="margin-left:0.25cm;"><span class="SourceText"><span class="T1">Run checksetup</span></span></p><ol style="margin-left:0.75cm;list-style-type:decimal; "><li class="P30" style="margin-left:0cm;"><p class="P30" style="margin-left:0.25cm;"><span class="SourceText">./checksetup.pl</span></p></li></ol></li></ol><p class="P14"><span class="SourceText"><span class="T1" /></span></p><p class="P14"><span class="SourceText"><span class="T1">These instructions assume you are installing on a fresh Bugzilla on Linux/Unix systems. For more detailed instructions, and instructions for other operating systems such as Windows, please see the README file in the testopia directory.</span></span></p><p class="P14">You should now be able to See the Testopia links in the Bugzilla footer after logging into Bugzilla. Make sure you update the new Testers group to include any users that are going to need access to test cases.  </p><h2 class="Heading2"><a name="Upgrading" />Upgrading</h2><p class="Textbody">To upgrade an existing release of Testopia, you can simply follow the steps outlined above. after first reversing the current patch. You can also upgrade to the latest CVS tip using the cvs_update.sh script located in the testopia/scripts directory. Fore more, see the README file.</p><p class="Textbody">Upgrading from Testrunner (v0.7 and prior) is not supported.  </p><h1 class="Heading1"><a name="Configuration" />Configuration</h1><p class="Textbody">Testopia adds a number of additional parameters to the Bugzilla Parameters page. They are located under the Testopia tab. If you are installing Testopia with a new installation of Bugzilla, you should be sure to set the <span class="T3">urlbase </span><span class="T4">parameter. Following is a list of required Testopia parameters and their explanations:</span></p><p class="P15">allow-test-deletion</p><p class="List1End"><span class="T4">        I</span>f this option is on, users can delete objects including plans and cases. Delete rights are maintained by the plan access control lists.</p><p class="P15">testopia-allow-group-member-deletes</p><p class="List1End"><span class="T4">        </span>If this option is on, members of the Testers group will be allowed to delete test objects. This overrides settings for individuals in the Testers group.</p><p class="P15">testopia-default-plan-testers-regexp</p><p class="List1End">        This is the default regular expression for granting access to new test plans.</p><p class="P15">default-test-case-status</p><p class="List1End">        Default status for newly created test cases.</p><p class="P29">testopia-max-allowed-plan-testers</p><p class="P29"> </p><p class="List1End">        Limit to how many users a plan access regular expression should match.</p><h1 class="Heading1"><a name="Using_Testopia" />Using Testopia</h1><h2 class="Heading2"><a name="Why_Test_3F" />Why Test?</h2><p class="Textbody">The following example illustrates why software testing is so important: </p><p class="Textbody">Taken from <a href="http://techiecorner.blogspot.com/">http://techiecorner.blogspot.com</a> .</p><p class="Quotations">In March 1992, a man living in Newtown near Boston, Massachusetts, received a bill for his as yet unused credit card stating that he owed $0.00. He ignored it and threw it away. </p><p class="Quotations">In April, he received another and threw that one away too.<br />The following month, the credit card company sent him a very nasty note stating they were going to cancel his card if he didn't send them $0.00 by return of post. He called them and talked to them; they said it was a computer error and told him they'd take care of it.</p><p class="Quotations">The following month, our hero decided that it was about time that he tried out the troublesome credit card figuring that if there were purchases on his account it would put an end to his ridiculous predicament. However, in the first store that he produced his credit card in payment for his purchases, he found that his card had been canceled. </p><p class="Quotations">He called the credit card company who apologized for the computer error once again and said that they would take care of it. The next day he got a bill for $0.00 stating that payment was now overdue. Assuming that, having spoken to the credit card company only the previous day, the latest bill was yet another mistake, he ignored it, trusting that the company would be as good as their word and sort the problem out.<br />The next month, he got a bill for $0.00 stating that he had 10 days to pay his account or the company would have to take steps to recover the debt.</p><p class="Quotations">Finally giving in, he thought he would play the company at their own game and mailed them a cheque for $0.00. The computer duly processed his account and returned a statement to the effect that he now owed the credit card company nothing at all. </p><p class="Quotations">A week later, the man's bank called him asking him what he was doing writing a cheque for $0.00. After a lengthy explanation, the bank replied that the $0.00 cheque had caused their cheque processing software to fail. The bank could now not process ANY cheques from ANY of their customers that day because the cheque for $0.00 was causing the bank's computer to crash. </p><p class="Quotations">The following month, the man received a letter from the credit card company claiming that his cheque had bounced and that he now owed them $0.00 and unless he sent a cheque by return of post them would be taking steps to recover the debt. </p><p class="P16">Though never proven to be true, this rather humorous anecdote explains the impact that untested software can have. In the case of both the credit card company and the bank, this seemingly minor issue may have cost both institutions significant sums of money in lost transactions and down time, to say nothing of the frustration of the customer. </p><p class="P16">Many times software errors cause only minor inconveniences. Other times they can have serious consequences. Think of the life support systems on the space shuttle or the flight control systems on an airliner. Software has become such an integral part of our lives that many times we don't realize how much we depend on  it until something goes wrong.</p><h2 class="Heading2"><a name="What_Types_of_Testing_can_Testopia_Help_You_With_3F" />What Types of Testing can Testopia Help You With?</h2><p class="Textbody">There are two general classifications of software testing: black box and white box. </p><p class="Quotations"><span class="T5">Black box testing is a strategy in which testing is based solely on the requirements and specifications. Unlike its complement, white box testing, black box testing requires no knowledge of the internal paths, structure, or implementation of the software under test</span> (Copeland, 2004,Sec I).</p><p class="Textbody"> </p><h5 class="Heading5"><a name="Black_Box_Testing" />Black Box Testing</h5><p class="Textbody">Testopia was designed primarily for this type of testing. Requirements are translated directly into test cases to be applied by the testers to the software being developed. If a requirement is not met, the test case fails; if it is met, it passes. </p><h5 class="Heading5"><a name="White_box_and_Automated_Testing" />White box and Automated Testing</h5><p class="Textbody">Though not specifically designed to handle white box tests (which are often automated), Testopia can still provide a repository for test results. Each test case can have an associated script and test logs can be attached to a test case to show the results of testing. </p><h1 class="Heading1"><a name="Getting_Started" />Getting Started</h1><h3 class="Heading3"><a name="The_Big_Picture" />The Big Picture</h3><div class="Textbody"><img width="693" height="563" alt="" src="file:///home/ghendricks/workspace/bnc-3.0/testopia/doc/" class="fr2" /></div><p class="Textbody">Since Testopia is an extension to Bugzilla, it relies on many of the same objects that Bugzilla uses to track bugs. In order to use Testopia you first need to set up products and versions using the Bugzilla product editor. Testopia makes use of Bugzilla's target milestones feature as well so you may want to turn this optional field on in the parameters. </p><p class="Textbody">Testopia is comprised of several objects that are interdependent. Together, they make managing the testing procedure possible. Lets look at each of these in turn. </p><h2 class="Heading2"><a name="Test_Plans" />Test Plans</h2><p class="Textbody">At the top of the Testopia hierarchy are test plans. Before you can do anything else in Testopia, you need a test plan. Test plans are associated with a single product in Bugzilla, though you can have multiple test plans for each product. Your test plan will serve as the storage point for all related test cases and test runs and it will act as the dashboard for your testing. It will also serve to determine who will have access to update test cases.</p><h2 class="Heading2"><a name="Test_Cases" />Test Cases</h2><p class="Textbody">Test cases are the heart of all testing. Test cases spell out what steps to take while running a test and what outcomes to expect. If a particular run through the steps fails to produce the expected outcome, the test fails. Test cases are semi-independent in Testopia. Each test case can be associated with multiple test plans so care should be taken to ensure that updating a test case does not interfere with testing in another test plan than your own. A list of associated test plans is displayed with each test case though, so this should not be too difficult. </p><p class="Textbody">Test cases can be divided into categories. You can define as many categories for your product as you like from the test plan page. These should not be confused with components however. Each product in Bugzilla is divided into components and you can apply multiple components to each test case, however each test case can only belong to one category at a time. </p><h2 class="Heading2"><a name="Test_Runs" />Test Runs</h2><p class="Textbody">Test runs are the focal point of the testing effort. Once you have defined a set of test cases, you are ready to run through those tests in a test run. Each run is associated with a single test plan and can consist of any number of test cases from that plan. Before we can run any test however, we need to have a couple more items first. </p><h2 class="Heading2"><a name="Test_Run_Environments" />Test Run Environments</h2><p class="Textbody">If test cases are the 'what' of testing, then environments are the 'where'. No test runs in a vacuum. Where you run your test is as important as how you run it. Software often is designed to run on specific hardware under specific conditions. These conditions are captured in the test environment. Environments are applied to test runs directly, but can be applied to test cases indirectly as we will see. </p><h2 class="Heading2"><a name="Builds" />Builds</h2><p class="Textbody">Software development is usually an iterative affair. Developers write code which is then compiled and included in a system. As bugs and enhancement requests come in, the developer rewrites portions over again to fix or enhance a product. In Testopia, each iteration is called a build. Builds are often associated with milestones of the project. This is reflected in the build's relationship to Bugzilla's target milestones object. Regardless of whether you use target milestones in Bugzilla, you need to define at least one build for your product before you can begin a test run. </p><h2 class="Heading2"><a name="Test_Case-Runs" />Test Case-Runs</h2><p class="Textbody">A test case-run is the record of how a particular test case fared in a particular run for a given build in a given environment. When you create a test run, records for each test case in that run are created. By default these take on the build and environment of the test run, however, it is possible to change these attributes on a particular case-run, essentially creating a new case-run for each combination. This is desirable in situations where most test cases are fairly generic in environmental scope but single test cases might require specific conditions. It also aids in iterative testing as each test case then be updated in a single run rather than having to create new runs to test the failed cases. </p><h1 class="Heading1"><a name="Testing_In_Testopia" />Testing In Testopia</h1><h2 class="Heading2"><a name="The_product_Dashboard" />The product Dashboard</h2><p class="Textbody">In Testopia 2.0, the product dashboard is the launch point for everything in Testopia. From here you can view your plans by product, view and save reports, and manipulate builds and categories. The product dashboard has tabs listing plans, cases, and runs, builds, environments, and categories. These tabs contain lists that can be sorted. Individual list items can be edited by clicking the edit icon in the toolbar above it, or double clicking in the field. Changes are saved immediately. </p><h2 class="Heading2"><a name="Adding_Categories_and_Builds" />Adding Categories and Builds</h2><p class="Textbody">Categories are used to classify your test cases. Each product has a default category and it is up to you want to use categories to divide up your test cases. Since you can also apply product components to a test case, you may find that this suffices.<span class="T9"> Before you can create a test run however, you have to specify at least one build. To add a build or category you can click the </span><span class="T6">add</span><span class="T9"> link found above each of these fields from the respective tab on the product dashboard. The fields are fairly self explanatory. In the case of builds however, you have the option of hiding the build by unchecking the A</span><span class="T10">ctive</span><span class="T9"> box.. This will hide it from the build list used when creating a run.</span></p><p class="P17">To edit categories and builds, double click the field in the list. From here you can edit individual builds and categories or remove them in the case of categories. </p><h2 class="Heading2"><a name="Start_With_a_Plan" />Start With a Plan</h2><p class="Textbody">All testing should start with a test plan. In most cases this will take the form of a document that details the purpose, structure, and methods that will be employed in testing. The IEEE has put together a standard document template for test plans (IEEE Standard 829-1998 for Software Test Documentation). Whether you decide to use a formal template such as this or not, having a rough outline of what your purpose for testing is will help those who test this in the future know what you were looking for in your testing. </p><p class="Textbody">To create a new test plan in Testopia:</p><ol style="margin-left:1.25cm;list-style-type:decimal; "><li class="P35" style="margin-left:0cm;"><p class="P35" style="margin-left:0.25cm;">Click the '<span class="T6">New Plan</span>' link in the Bugzilla footer</p></li><li class="P35" style="margin-left:0cm;"><p class="P35" style="margin-left:0.25cm;">Enter a name for this test plan. </p></li><li class="P35" style="margin-left:0cm;"><p class="P35" style="margin-left:0.25cm;">Select a product from the product drop-down list </p></li><li class="P35" style="margin-left:0cm;"><p class="P35" style="margin-left:0.25cm;">Select a type for this plan (descriptions of types below) </p></li><li class="P35" style="margin-left:0cm;"><p class="P35" style="margin-left:0.25cm;">Select a product version. This will be the default version for new runs. </p></li><li class="P35" style="margin-left:0cm;"><p class="P35" style="margin-left:0.25cm;">Type or paste your plan document into the Plan Document Editor </p></li><li class="P35" style="margin-left:0cm;"><p class="P35" style="margin-left:0.25cm;">Click the <span class="T3">Add</span> button</p></li></ol><p class="Textbody">Once you have done this, you will be taken to your newly created test plan.  </p><h5 class="Heading5"><a name="Viewing_A_Test_Plan" />Viewing A Test Plan</h5><p class="Textbody">At the top of your new plan, you will see an overview section detailing much of the information you entered on the new plan form. In addition to this however, you will see such things as the plan author, when it was created, and what version of the document you are viewing. </p><h5 class="Heading5"><a name="Attaching_Files" />Attaching Files</h5><p class="Textbody">Either during creation or once you have created your test plan, you can upload attachments to it. To create an attachment, simply click the browse button and locate the file you wish to attach, type a description in the Description field and click the attach button.  </p><p class="Textbody">Attachments are treated very much the same as they are in Bugzilla. The size limit will be determined by the max-attachment-size parameter the same as it is for Bugzilla </p><p class="Textbody">To edit an attachment click the edit link. This allows you to set the description, filename, and mime-type for the attachment You can view it by clicking the ID link if it is a viewable type or download it otherwise. </p><h5 class="Heading5"><a name="Editing_Plan_Fields" />Editing Plan Fields</h5><p class="Textbody"><span class="T9">In the overview section, fields that can be edited have a pencil icon next to them or consist of a drop down field. Changes to the fields are saved immediately.</span></p><h5 class="Heading5"><a name="Viewing_Plan_History" />Viewing Plan History</h5><p class="P17">Any changes made to plan values are captured and a history is kept so that as test circumstances change over the course of a development cycle, you can know what applied for a given set of tests in time. This also serves to thwart unintentional changes to your test plan since each change captures when it happened and who performed it. To view this history click the <span class="T3">History</span><span class="T4"> tab.</span></p><p class="P17">Changes to the plan document are handled a little differently. A full version is kept for each change and it is possible to view the differences between versions by selecting which versions you want to compare and clicking the <span class="T3">View</span><span class="T4"> button on the plan history page.</span></p><h2 class="Heading2"><a name="Creating_Test_Cases" />Creating Test Cases</h2><p class="Textbody">Once you have a plan to store them in, you can start entering your test cases. Click the <span class="T6">New Case</span><span class="T9"> button on the plan list page or click the </span><span class="T6">New Case</span><span class="T9"> link in the footer to begin. You can also right click on a test plan in a list and select “Add Test Case” from the menu.</span></p><h5 class="Heading5"><a name="Shortcut__E2_80_93_Creating_a_Test_Case" />Shortcut – Creating a Test Case</h5><ol style="margin-left:1.25cm;list-style-type:decimal; "><li class="P43" style="margin-left:0cm;"><p class="P43" style="margin-left:0.25cm;">Click <span class="T6">Create a New Test Case</span> on the plan page or <span class="T6">New Case</span> from the footer</p></li><li class="P43" style="margin-left:0cm;"><p class="P43" style="margin-left:0.25cm;">Enter a short description of your test case in the <span class="T3">Summary</span> field</p></li><li class="P43" style="margin-left:0cm;"><p class="P43" style="margin-left:0.25cm;">Select a <span class="T3">Category</span></p></li><li class="P43" style="margin-left:0cm;"><p class="P43" style="margin-left:0.25cm;">Add a default tester or select a component to assign the test case to the Bugzilla QA Contact for that component. </p></li><li class="P43" style="margin-left:0cm;"><p class="P43" style="margin-left:0.25cm;">List the steps for testing in the <span class="T3">Action</span> field</p></li><li class="P43" style="margin-left:0cm;"><p class="P43" style="margin-left:0.25cm;">Provide the expected outcomes in the <span class="T3">Expected Results</span> field</p></li><li class="P43" style="margin-left:0cm;"><p class="P43" style="margin-left:0.25cm;">Click the <span class="T3">Add</span> button.</p></li></ol><p class="P17">Because it is possible to have a single test case linked to multiple test plans, you can select which plans you wish to link your new case to.  </p><p class="P17">First you need to write a short summary of your test case in the summary field. Notice the options for the other fields here as well. Descriptions of each can be found at the end of this document. The only required field here is the summary, however you may want to apply a default tester and a requirement at this time. Selecting a component from the components tab will automatically set the default tester based on the Bugzilla QA contact of that component. </p><p class="P17">Though not required at this point, you should supply your list of testing steps in the <span class="T3">Action </span><span class="T4">field and the list of expected outcomes in the </span><span class="T3">Expected Results</span><span class="T4"> field. To do this, click the </span><span class="T7">Edit Document</span><span class="T4"> link under the appropriate field. This will display a WYSIWYG editing area where you can type or paste your values. For tips on writing good test cases refer to D.L Runnels' </span><a href="http://www.stickyminds.com/getfile.asp?ot=XML&amp;id=2136&amp;fn=XDD2136filelistfilename1.pdfL"><span class="T7">How to Write Better Test Cases</span></a></p><p class="P18">From here you are taken to your test case. You will notice a link at the top giving you the option of creating another test case for this plan at this time.  </p><h5 class="Heading5"><a name="Adding_and_Removing_Components_and_Tags" />Adding and Removing Components and Tags</h5><p class="P18">Once again, you are offered an overview detailing the information for this test case at a glance. Below that you have the option of adding additional components to this test case. Because some testing is cross product, you have the option to add components from any product in Bugzilla to your test case. You can also remove a component by selecting it from the list and clicking the <span class="T3">Remove</span> button. </p><p class="P18">As with plans you also can apply tags to your test cases. This will be described later.</p><h5 class="P21"><a name="Viewing_Test_Case-Run_Results" />Viewing Test Case-Run Results</h5><p class="P18">Clicking the CaseRun History tabwill  display a history of this test case in all runs and their status as to whether they passed or failed in those runs. </p><h5 class="Heading5"><a name="Attaching_Files" />Attaching Files</h5><p class="Textbody">Just like test plans, you can attach files to your test cases. This works the same as for test plans. </p><h5 class="Heading5"><a name="Attaching_Bugs" />Attaching Bugs</h5><p class="Textbody">Unlike test plans, you have the option of attaching Bugzilla bugs to your test cases. Each test case can have multiple bugs attached. To attach a bug, enter the bug number in the field and click the <span class="T3">Add </span><span class="T4">button. A table of attached bugs is displayed.</span></p><h5 class="Heading5"><a name="Editing_Case_Fields" />Editing Case Fields</h5><p class="Textbody">As with test plans, you can update any of the values you entered while creating the plan. A history of these changes is also kept which you can view by clicking the <span class="T3">History</span><span class="T4"> button near the top of the test case. </span></p><h5 class="Heading5"><a name="Test_Case_Dependencies" />Test Case Dependencies</h5><p class="Textbody">Test cases have the concept of dependencies. Often when testing a set of test cases, the order in which you test is determined by what tests came before. It is also often the case that if a given test case fails, it prevents other test cases from being run successfully at all. You can represent those relationships here using the <span class="T3">blocks </span><span class="T4"> and </span><span class="T3">depends on</span><span class="T4"> fields. If this test potentially blocks the execution of another test case, you would enter that other test case's id in the </span><span class="T3">blocks</span><span class="T4"> field. If this test case requires some other test case be run first you can enter that other test case's id in the </span><span class="T3">depends on </span><span class="T4"> field. If a test case that blocks another test case fails, and both of them are in a single run, the blocked test case will automatically receive a status of </span><span class="T3">BLOCKED</span><span class="T4">.</span></p><h2 class="Heading2"><a name="Creating_Environments" />Creating Environments</h2><p class="Textbody">As mentioned above, environments are the <span class="T11">where </span><span class="T12">in testing. </span>In software testing in particular, this might include such things as which operating system and what hardware platform a test was conducted on.. Environments can be as broad or narrow as you define them. The most basic environment consists of an OS and platform chosen from Bugzilla's lists of these objects. However it can be much more complicated such as a suite of applications and other products. It could be a browser or other client package.</p><p class="Textbody">Creating an environment in Testopia requires two steps. The first involves defining a set of variables to be used in your environment. The second is to create the environment from the set of possible elements.</p><h3 class="Heading3"><a name="Environment_Administration" />Environment Administration</h3><p class="Textbody">When you first install Testopia, you must first define the set of environment variables that will be used to construct your environments.  When editing an environment, the environment variables are arranged in a hierarchy of objects that is represented as a tree.  There are four major levels: Category, Element,  Property, and Property Values.</p><h4 class="Heading4"><a name="Categories" />Categories</h4><p class="Textbody">Environment Categories are similar to test case categories in that they provide a sorting mechanism for your environment elements. Each category is associated with a single product or in the special bucket labeled <span class="T11">–ALL-- . </span><span class="T12">The –All-- denotes all products, meaning it holds categories of elements that are not specific to any product.</span></p><p class="P19">When you first install Testopia you will see that the –ALL-- bucket contains two Categories, OS and Platform. Expanding these you will see that there are elements representing each of the OS and Platform values defined in Bugzilla. This is list is generated at the time you first install Testopia and is maintained separately from the Bugzilla lists thereafter.  </p><p class="P19">To create a category, right click on the product or –ALL-- and choose <span class="T11">Add Category</span>. You can then click on the newly create category in the tree which will pop up a form that allows you to edit the category name or change the product it is associated with.</p><h4 class="Heading4"><a name="Elements" />Elements</h4><p class="Textbody">Once you have a category defined for your product or the –ALL-- bucket, you can add elements to that category. Elements are the crux of what makes up your environment. To create an element, right click on the category you wish to add it to and choose <span class="T11">create element. </span></p><p class="P19">This will create an element labeled “New Element” which you can edit by clicking on it in the tree, or right clicking and choosing <span class="T11">Edit. </span></p><p class="P19">Elements can be nested inside other elements. To create a sub element, right click on the element and choose <span class="T11">Add Element</span>. You can edit this child element in the same manner as its parent. You can create as many levels of elements as you need to represent the complexity of your environment.</p><h4 class="Heading4"><a name="Properties" />Properties</h4><p class="Textbody">Properties describe your element. You can add properties to your elements by right clicking the element and choosing <span class="T11">Add Property</span>.  You can add as many properties to your elements as you need. Properties cannot be nested however.</p><p class="Textbody">To edit your property, click on it in the tree or right click on it and choose <span class="T11">Edit</span><span class="T12">.</span></p><h4 class="Heading4"><a name="Property_Values" />Property Values</h4><p class="Textbody">Once you have defined a property for your element, you will need to provide a list of values from which to select for you environment. Right click on your property and choose <span class="T11">Add Value </span><span class="T12">to create a value for your property. You can edit property values by right clicking and choosing Edit, or by clicking on one of the values under your property.</span></p><p class="P19">You can change the name or reorder the list of values from the form provided. You must hit Save Changes in order for you changes to be committed.  </p><h2 class="Heading2"><a name="Creating_Your_Environment" />Creating Your Environment</h2><p class="Textbody">Once you have set up the elements that will be used in your environment, you can now create environments with those elements. </p><p class="Textbody">From the product dashboard environments tab, Click the <span class="T13">Add</span><span class="T14"> button</span><span class="T12"> in the toolbar. </span></p><p class="P19">You are prompted to name your environment. The product is used only for classification. It does not limit your choices of which elements can be placed in your environment. </p><p class="P19"><span class="T4">Once it is created, clicking it</span> will take you to the environment editor. Here you will see two trees, one representing your new environment and the other containing the list of variables from which to choose. Your environment will consist of elements you defined earlier. To add an element, find it in the list and simply drag it onto your environment tree. The order does not matter. You can grab child elements at any level, but dragging an element with children will bring the children as well. </p><p class="P19">Once you have selected the elements for your environment, you can now select which of the property values apply to your environment. Expand the element and property and simply click the value you wish to use. It will have a star placed next to it to show your selection. </p><p class="P19">To remove an element, right click on it and choose R<span class="T11">emove</span>.</p><p class="P19">All changes to your tree are saved immediately.  </p><p class="P19"> </p><h1 class="Heading1"><a name="Creating_A_Test_Run" />Creating A Test Run</h1><h5 class="Heading5"><a name="Shortcut__E2_80_93_Creating_a_Test_Run" />Shortcut – Creating a Test Run</h5><ol style="margin-left:1.25cm;list-style-type:decimal; "><li class="P55" style="margin-left:0cm;"><p class="P55" style="margin-left:0.25cm;">Click the <span class="T6">Create a New Test Run</span><span class="T9"> link on your test plan or the </span><span class="T6">New Run</span><span class="T9"> link in the footer.</span></p></li><li class="P50" style="margin-left:0cm;"><p class="P50" style="margin-left:0.25cm;">Select which test cases to include. Use the filter to narrow your scope and the paging links to view more or fewer test cases. </p></li><li class="P50" style="margin-left:0cm;"><p class="P50" style="margin-left:0.25cm;">Enter a summary for this test run. </p></li><li class="P50" style="margin-left:0cm;"><p class="P50" style="margin-left:0.25cm;">Select a build from the <span class="T3">Build</span> list or type the name for a new one.</p></li><li class="P50" style="margin-left:0cm;"><p class="P50" style="margin-left:0.25cm;">Select an environment from the <span class="T3">Environment</span> list.</p></li><li class="P50" style="margin-left:0cm;"><p class="P50" style="margin-left:0.25cm;">Click <span class="T3">Add</span>.</p></li></ol><p class="Textbody">Once you have an environment to test in and some test cases to test, you are now ready to begin testing. You do this by creating a test run. The easiest way to do this is from within your test plan. Click the <span class="T6">Create a New Test Run</span><span class="T9"> link in the Test Runs section of your plan. You can also create a run by clicking the </span><span class="T6">New Run</span><span class="T9"> link in the footer and entering your plan number.</span></p><p class="P17">You will be presented with a list of CONFIRMED test cases from your test plan. You can select only the ones you want included or all of them at once using the select all link. If you want to limit the list to only include test cases that meet certain criteria, you can use the filter to narrow down the list. If you have a lot of test cases, you can use the paging features in the table of test cases to view more than the default 25 at a time. This is important as the only test cases that will be included are those that are visible on the screen and have a check in the box next to the case ID. If you do not know which test cases to apply, or do not wish to do so at this time, you can always add test cases later. </p><p class="P17">Next you need to provide a summary and select a build. If you forgot to create the build before, you can simply type the name of a new build in the <span class="T3">New</span> box and it will be added to the product. You can then edit the build later to add a milestone. Finally you need to select an environment. You do this by typing the name of your environment in the <span class="T3">Environment</span> box. As you type, a list of environments from your product that match will appear. You can also click the drop down arrow to view a list of all environments in your product. </p><p class="P17">Once you have completed the form, click the <span class="T3">Add</span> button to be taken to your new run.</p><h5 class="Heading5"><a name="Viewing_Your_Test_Run" />Viewing Your Test Run </h5><p class="Textbody">As with the other objects, you will notice an overview section at the top of your run. This contains similar information as found in the test case and test plan with one notable exception: the progress bar. This will show you a percentage of completed test cases with the colors representing statuses.  </p><p class="Textbody">Below this section you will see the Test Case Run Logs. This table represents the test cases you will be testing each row represents a single case-run. You will notice the expander arrows next to each row in the table. Click on this to expand the case-run form. Take note of the <span class="T3">Filter</span> and <span class="T3">Report</span> expanders as well. You can use the filter much like you did when choosing the test cases to include in your run, except this provides more options for narrowing the list of case runs visible at a time.</p><h5 class="Heading5"><a name="Adding_Cases" />Adding Cases</h5><p class="Textbody">As mentioned earlier, you can add test cases to your run by clicking the <span class="T3">Add Cases</span> button below the case-run table. This will take you back to the list of test cases you saw when creating your test run excluding any test cases in your plan that are already in this run. </p><h5 class="Heading5"><a name="Editing_Test_Run_Fields" />Editing Test Run Fields</h5><p class="Textbody">As with test cases and test plans, you can update any of the values you applied when you created the test run in the form at the bottom of the page. Note that changing the build and environment will not affect the case-runs already in the run but it will apply to any test cases added after the change. Changes to these fields are tracked and a history is kept much the same way as with test plans and test cases. Clicking the <span class="T3">History</span> button will display this history.</p><h1 class="Heading1"><a name="Running_Your_Tests" />Running Your Tests</h1><p class="Textbody">As a tester, you will likely spend most of your time running tests and recording the results from the test run page. When you first open a run the test cases are represented in a table as case-runs. Your run may included only those test cases that are required for a specific testing priority, or for a given tester. Or, your test run may include a larger set of test cases that represents an entire test cycle. On a given day, you may only want to test the highest priority test cases and skip lower priorities for later in the process. Or you may just want to run regression tests on the set of previously failed test cases. You can do this using the filters.  </p><h5 class="Heading5"><a name="Filtering_Your_Test_Cases_in_a_Run" />Filtering Your Test Cases in a Run</h5><p class="Textbody">Expand the <span class="T3">Filter </span><span class="T4">by clicking the expander triangle next to the filter. You will notice a number of options for filtering your test cases including:</span></p><ul style="margin-left:1.25cm;"><li class="P56" style="margin-left:0cm;"><p class="P56" style="margin-left:0.25cm;">Status </p></li><li class="P56" style="margin-left:0cm;"><p class="P56" style="margin-left:0.25cm;">Category </p></li><li class="P56" style="margin-left:0cm;"><p class="P56" style="margin-left:0.25cm;">Build </p></li><li class="P56" style="margin-left:0cm;"><p class="P56" style="margin-left:0.25cm;">Environments </p></li><li class="P56" style="margin-left:0cm;"><p class="P56" style="margin-left:0.25cm;">Priorities </p></li><li class="P56" style="margin-left:0cm;"><p class="P56" style="margin-left:0.25cm;">Components </p></li><li class="P56" style="margin-left:0cm;"><p class="P56" style="margin-left:0.25cm;">Assignee </p></li><li class="P56" style="margin-left:0cm;"><p class="P56" style="margin-left:0.25cm;">Tags </p></li><li class="P56" style="margin-left:0cm;"><p class="P56" style="margin-left:0.25cm;">Case summary. </p></li></ul><p class="P20">Testopia can remember your filters so that the next time you view this run You can rerun a filter. To save a filter, enter a name and click the save button. To clear the filter and return to the full list click the <span class="T3">Reset</span> button. Saved filters are available on the filters tab on the right.</p><h5 class="Heading5"><a name="Sorting_Test_Cases" />Sorting Test Cases</h5><p class="Textbody">You can sort the list of test cases by clicking on any of the table column headings. You can also sort on the summary by clicking any of the <span class="T3">Summary </span><span class="T4">field headers. If you wish to create a custom sort order for your test cases, type a number to index on in the </span><span class="T3">Index</span><span class="T4"> fields and click </span><span class="T3">Change</span><span class="T4">. Sorting on this field will then display your cases in ascending order of the indexes you supplied.</span></p><p class="P20">Currently Testopia only supports ascending sorts. Support for descending sorts are planned for future releases. </p><h5 class="Heading5"><a name="Passing_and_Failing_Test_Cases" />Passing and Failing Test Cases</h5><p class="Textbody">Once you are ready to begin testing, expand the first test case in your list and read the <span class="T3">Action</span> and <span class="T3">Expected Results</span><span class="T4"> for this case. You can then perform the test. If the expected outcome is achieved you can pass the test by clicking the green check or </span><span class="T3">PASSED</span><span class="T4"> button: </span><span class="T4"><img width="18" height="18" alt="" src="file:///home/ghendricks/workspace/bnc-3.0/testopia/doc/" class="fr3" /></span><span class="T4">.</span></p><div class="P20">If the results were not expected or an error occurred, you can fail the test by clicking the red X or <span class="T3">FAILED</span> button: <img width="18" height="18" alt="" src="file:///home/ghendricks/workspace/bnc-3.0/testopia/doc/" class="fr3" />.</div><p class="P20">Explanations of the other statuses appear at the end of this document. </p><h5 class="Heading5"><a name="Adding_Notes" />Adding Notes</h5><p class="P20">Updating the status will add a line to the notes field with the time of the change and who made it. You can add additional notes by typing them in the <span class="T3">Add Note</span> field and clicking <span class="T3">Append Note</span>.</p><h5 class="Heading5"><a name="Attaching_Bugs" />Attaching Bugs</h5><p class="P20">If a test case has failed, or for any other reason, you may want to attach a bug to this test. You can attach existing bugs or create new ones. To attach an existing bug, type the bug number in the box and click <span class="T3">Attach Bug</span>. The bug will be displayed in the <span class="T3">Bugs Detected</span> field. If you wish to log a new bug, click the <span class="T3">New </span>button. You will be taken to the enter bug page with information about the test case already provided in the form. You can now provide any additional details and submit the bug. This is done in a new window so that you do not lose your place in testing. To return to your run, close the new window.</p><h5 class="Heading5"><a name="Reassigning_Tests" />Reassigning Tests</h5><p class="Textbody">The assignee field is used to help testers track their own test cases. If you wish to change the assignee of a particular test case, you can do so by entering their Bugzilla user name in the assignee field and clicking <span class="T3">Assign</span>. Updating test cases is not limited by assignee. Anyone with rights to edit the case-run can pass or fail the test. If a test case is closed (PASSED, FAILED, or BLOCKED), the name of the person who performed the action is captured in the <span class="T3">Tested By</span> field. </p><h5 class="Heading5"><a name="Changing_Build_or_Environment_on_a_Test_Case" />Changing Build or Environment on a Test Case</h5><p class="Textbody">Testopia is designed to be flexible. Testing organizations vary greatly on modes and methodologies. For this purpose, test runs were designed to allow the greatest flexibility possible as to how tests are run. Some groups will create a single test run for each build and environment combination they encounter. Others will want a monolithic test run that represents an entire product release. In this case you can update the build and environments on individual test cases in your run. Each time you do, the appropriate case-run record is returned, if one exists, or is created if it does not. A note is appended with the time of the change as well as who made the change. If a new record is created, the status is set to IDLE and you are ready to test with your new build or environment selection. For any given run, the case-runs displayed are the last ones that were updated. In essence however, the case-run table represents a two dimensional view of a three dimensional object. Changing the build or environment bring the corresponding record to the forefront. This should be kept in mind when running reports on case runs as what you see in a run is only the surface of what data may be included.</p><h5 class="Heading5"><a name="Deleting_Case-Runs" />Deleting Case-Runs</h5><p class="Textbody">Sometimes you might mistakingly add a test case to a run that does not belong or you may select an invalid build and environment combination. In these cases it is easiest to remove them by deleting the case-run all together. You must have the proper permissions to do so and the administrator needs to allow this in the parameters. To delete a single case run or a group of them, select it from the list and click the <span class="T10">Delete</span><span class="T9"> button in the toolbar. You will be prompted to confirm the action before the record is removed.</span></p><h5 class="Heading5"><a name="Updating_Multiple_Cases_at_Once" />Updating Multiple Cases at Once</h5><p class="Textbody">You can update a group of case-runs at once by selecting the group in the list and either right-clicking to bring up the menu, or using the toolbar above<span class="T9"> the list of cases. From here you can change the status, attach bugs, update build or environment attributes, and even delete a whole list at once. </span></p><h5 class="Heading5"><a name="Wrapping_Up" />Wrapping Up</h5><p class="Textbody">Once all tests in a run are complete, you should set the status on the run to STOPPED. This will prevent further updates to case-runs in the run. </p><h1 class="Heading1"><a name="Getting_Around_Testopia" />Getting Around Testopia</h1><p class="Textbody">Navigating Testopia is done using the links in the Bugzilla footer. You can use the QuickSearch box to quickly jump to any case, run, plan or environment. To do so simply type the object's ID number, or part of the name or summary, prefixed by a type identifier. Following is the list of identifiers: </p><div style="text-align:left"><table border="0" cellspacing="0" cellpadding="0" class="Table1"><colgroup><col width="256" /><col width="256" /></colgroup><tr><td style="text-align:left;width:2.3083in; " class="Table1A1"><p class="TableHeading">Object </p></td><td style="text-align:left;width:2.3083in; " class="Table1B1"><p class="TableHeading">Prefix </p></td></tr><tr><td style="text-align:left;width:2.3083in; " class="Table1A2"><p class="P23"><span class="T2">TEST CASE</span> </p></td><td style="text-align:left;width:2.3083in; " class="Table1B2"><p class="P22">(Optional for cases)  </p><ul style="margin-left:1.25cm;"><li class="P95" style="margin-left:0cm;"><p class="P95" style="margin-left:0cm;">case  </p></li><li class="P95" style="margin-left:0cm;"><p class="P95" style="margin-left:0cm;">TC </p></li><li class="P105" style="margin-left:0cm;"><p class="P105" style="margin-left:0cm;">c  </p></li></ul></td></tr><tr><td style="text-align:left;width:2.3083in; " class="Table1A2"><p class="P23"><span class="T2">TEST PLAN</span> </p></td><td style="text-align:left;width:2.3083in; " class="Table1B2"><ul style="margin-left:1.25cm;"><li class="P97" style="margin-left:0cm;"><p class="P97" style="margin-left:0cm;">plan  </p></li><li class="P97" style="margin-left:0cm;"><p class="P97" style="margin-left:0cm;">TP  </p></li><li class="P106" style="margin-left:0cm;"><p class="P106" style="margin-left:0cm;">p  </p></li></ul></td></tr><tr><td style="text-align:left;width:2.3083in; " class="Table1A2"><p class="P23"><span class="T2">TEST RUN</span> </p></td><td style="text-align:left;width:2.3083in; " class="Table1B2"><ul style="margin-left:1.25cm;"><li class="P99" style="margin-left:0cm;"><p class="P99" style="margin-left:0cm;">run  </p></li><li class="P99" style="margin-left:0cm;"><p class="P99" style="margin-left:0cm;">TR  </p></li><li class="P107" style="margin-left:0cm;"><p class="P107" style="margin-left:0cm;">r  </p></li></ul></td></tr><tr><td style="text-align:left;width:2.3083in; " class="Table1A2"><p class="P23"><span class="T2">TEST RUN ENVIRONMENT</span> </p></td><td style="text-align:left;width:2.3083in; " class="Table1B2"><ul style="margin-left:1.25cm;"><li class="P101" style="margin-left:0cm;"><p class="P101" style="margin-left:0cm;">env  </p></li><li class="P101" style="margin-left:0cm;"><p class="P101" style="margin-left:0cm;">TE  </p></li><li class="P108" style="margin-left:0cm;"><p class="P108" style="margin-left:0cm;">e  </p></li></ul></td></tr><tr><td style="text-align:left;width:2.3083in; " class="Table1A2"><p class="P23"><span class="T2">TEST CASE-RUN</span> </p></td><td style="text-align:left;width:2.3083in; " class="Table1B2"><ul style="margin-left:1.25cm;"><li class="P103" style="margin-left:0cm;"><p class="P103" style="margin-left:0cm;">caserun  </p></li><li class="P103" style="margin-left:0cm;"><p class="P103" style="margin-left:0cm;">TCR  </p></li><li class="P109" style="margin-left:0cm;"><p class="P109" style="margin-left:0cm;">cr  </p></li></ul></td></tr><tr><td style="text-align:left;width:2.3083in; " class="Table1A2"><p class="P23"><span class="T2">TAGS</span> </p></td><td style="text-align:left;width:2.3083in; " class="Table1B2"><ul style="margin-left:1.25cm;"><li class="P110" style="margin-left:0cm;"><p class="P110" style="margin-left:0cm;">tag  </p></li></ul></td></tr></table></div><p class="Textbody"><br />So for example, to find test run 45 you could type <span class="T11">r 45</span> or <span class="T11">tr 45</span> or <span class="T11">run 45.</span></p><p class="P19">To find environments with 'Linux' in the name you could type <span class="T11">e:linux </span>or <span class="T11">TE Linux</span>.</p><h2 class="P25"><a name="Searching" />Searching</h2><p class="P19">Bugzilla has very powerful searching capabilities. Testopia has applied the Bugzilla search engine to searching for test cases, plans, runs, environments, and case-runs. Each of these has its own set of search parameters that can be used to narrow the scope of a search. To perform a search, click the <span class="T6">S</span><span class="T7">earch</span><span class="T6"> </span>link in the footer and then click the tab representing the object you wish to search from.. From here you select the parameters you wish to query on and click the <span class="T3">Submit</span> button. This will take you to the corresponding list page for that object.</p><h5 class="Heading5"><a name="Sorting_Search_Results" />Sorting Search Results</h5><p class="P19">Search results are paged and sortable. To sort, click the column header of the corresponding field you wish to sort on. This will return the list in ascending order. Click a second time for descending order.</p><h5 class="Heading5"><a name="Paging" />Paging</h5><p class="P19">By default, Testopia will display 25 records at a time. You can use the links at the bottom of the list to navigate from one page of search results to another or use the <span class="T3">Jump To Page</span> box to jump directly to a page of results. You change the number of records you view at a time by selecting an option from the page size drop down. Lastly, if there are not too many records, you can opt to view all of the records at once using the <span class="T6">View All</span><span class="T9"> link. </span></p><h5 class="Heading5"><a name="Batch_Processing" />Batch Processing</h5><p class="Textbody">From the search results page of cases, runs, plans, and case-runs, you can update a batch of objects at once. Do this by selecting which objects to update right clicking and choosing edit. For example, with test cases, you can apply changes to virtually any fields as well as add these cases to test runs or link them to a set of plans. You can also export test cases as CSV or XML. More on this later. </p><h5 class="Heading5"><a name="Saved_Searches" />Saved Searches</h5><p class="Textbody">Like Bugzilla, Testopia offers the user the opportunity to save a search for later retrieval. You do this by clicking the save button in the toolbar, typing a name in the <span class="T11">save search as</span> field and clicking the <span class="T3">Save</span> button. Saved searches appear below the other Testopia links in the footer and from the searches tab on the product dashboard. You can remove a saved search <span class="T9">by selecting it in the searches tab and right clicking and choosing Delete saved search.</span></p><h2 class="Heading2"><a name="Reporting" />Reporting</h2><p class="Textbody">As with searching, Testopia has modified the Bugzilla reporting engine to provide basic tabular reports based on a set of search criteria. These reports can be run on test cases, runs, plans, and case-runs. To run a report, click the <span class="T6">Reports</span> menu on the product dashboard and click the tab corresponding to the object you wish to report on. Select the fields for the horizontal and vertical axes of the report  and then select your search criteria. The default report is in the form of tabular data. You can then switch between bar and line graph modes or export the data as a CSV (comma separated values) file which can be opened in a spreadsheet.</p><p class="Textbody">In addition to these generic reports, certain objects have other reports associated with them. These are accessed from the object pages directly.  </p><h5 class="Heading5"><a name="Plan_Reports" />Plan Reports</h5><h9 class="P26"><a name="Completion_Reports" />Completion Reports</h9><p class="Textbody">Right clicking a selection of runs from the run tab or builds from the build tab in the product dashboard and going to the reports menu allows you to view a report of case-runs by run or build. As with searches, these reports can be saved. Click the tool icon in the dashboard portal above the report and select save.</p><h9 class="P26"><a name="Top_Bugs" />Top Bugs</h9><p class="Textbody">This report displays the bugs found in test cases within the test plan ordered by the bugs attached to the most test cases. In other words, which bugs are failing the most test cases. </p><h9 class="P26"><a name="Bugs_Found_In_This_Plan" />Bugs Found In This Plan</h9><p class="Textbody">This generates a bug list of all the bugs attached to any case in this plan. </p><h9 class="P26"><a name="Printable_Percentage_Report" />Printable Percentage Report</h9><p class="Textbody">This report displays the pass/fail percentages of the plan by run, build, and environment. </p><h5 class="Heading5"><a name="Test_Case_Reports" />Test Case Reports</h5><h9 class="P26"><a name="Estimated_vs_Actual_Time" />Estimated vs Actual Time</h9><p class="Textbody">Test cases can have a time estimate associated with them. This can then be used in conjunction with the case-runs for that case to determine the actual running time. To do this, test case-runs must be placed in the RUNNING state when a test is started. This then starts the stopwatch so to speak for that case in that run. When a case is passed or failed the difference of the two times is calculated. The average of all case-runs in all runs for this case is then used to calculate this report. </p><h9 class="P26"><a name="Historic_Status_Breakdown" />Historic Status Breakdown</h9><p class="Textbody">This pie chart represents the percentage of all case-runs for this case divided by status. </p><h2 class="Heading2"><a name="Cloning" />Cloning</h2><p class="Textbody">Often it is desirable to copy test information for use in a new development cycle. Testopia allows you to clone test cases, test run, and whole test plans, allowing you more efficiently move from one product release to another. Cloning is performed by clicking the <span class="T3">Clone</span> button on the object you wish to clone.</p><h5 class="Heading5"><a name="Cloning_Test_Plans" />Cloning Test Plans</h5><p class="Textbody">To clone a test plan: </p><ol style="margin-left:1.25cm;list-style-type:decimal; "><li class="P65" style="margin-left:0cm;"><p class="P65" style="margin-left:0.25cm;">Navigate to the plan you wish to clone and click the <span class="T3">Clone</span> button.</p></li><li class="P65" style="margin-left:0cm;"><p class="P65" style="margin-left:0.25cm;">Enter a name for the new plan or accept the default. </p></li><li class="P65" style="margin-left:0cm;"><p class="P65" style="margin-left:0.25cm;">Choose a product and product version to clone to. </p></li><li class="P65" style="margin-left:0cm;"><p class="P65" style="margin-left:0.25cm;">Select the clone options</p></li><li class="P65" style="margin-left:0cm;"><p class="P65" style="margin-left:0.25cm;">Click <span class="T3">Clone</span>.</p></li></ol><p class="Textbody">When cloning a test plan, you have the option to copy attachments, the plan document, any tags, and the plans access control list. You have the option of either copying the test cases, or creating links to the existing test cases. Copying the test cases will produce a new set of test cases with new Ids whereas linking will allow you to make modifications to your test cases and have then reflected everywhere.  </p><p class="Textbody">If you choose to copy the test cases, you are also given the option to apply yourself as the author of the new cases. </p><h5 class="Heading5"><a name="Cloning_Test_Cases" />Cloning Test Cases</h5><p class="Textbody">To clone a test case: </p><ol style="margin-left:1.25cm;list-style-type:decimal; "><li class="P70" style="margin-left:0cm;"><p class="P70" style="margin-left:0.25cm;">Navigate to the test case you wish to clone and click the <span class="T3">Clone</span> button.</p></li><li class="P70" style="margin-left:0cm;"><p class="P70" style="margin-left:0.25cm;">Select a clone method. </p></li><li class="P70" style="margin-left:0cm;"><p class="P70" style="margin-left:0.25cm;">If copying, check the box to copy within the plans already associated </p><ol style="margin-left:0.75cm;list-style-type:decimal; "><li class="P70" style="margin-left:0cm;"><p class="P70" style="margin-left:0.25cm;">Enter the plan ids of any additional test plans you wish to copy to </p></li><li class="P70" style="margin-left:0cm;"><p class="P70" style="margin-left:0.25cm;">Select clone options </p></li></ol></li><li class="P70" style="margin-left:0cm;"><p class="P70" style="margin-left:0.25cm;">If linking, enter the ids of any plans you with to link this case to. </p></li></ol><p class="Textbody">As with cloning plans, you have the option of making yourself the author of the copy. You can choose to copy the attachments, tags, components, and document. </p><h5 class="Heading5"><a name="Cloning_a_Run" />Cloning a Run</h5><p class="Textbody">To clone a test run: </p><ol style="margin-left:1.25cm;list-style-type:decimal; "><li class="P76" style="margin-left:0cm;"><p class="P76" style="margin-left:0.25cm;">Navigate to the test run you wish to clone and click the <span class="T3">Clone</span> button.</p></li><li class="P76" style="margin-left:0cm;"><p class="P76" style="margin-left:0.25cm;">Enter a summary for the copy. </p></li><li class="P76" style="margin-left:0cm;"><p class="P76" style="margin-left:0.25cm;">Choose a plan within the product to clone to. </p></li><li class="P76" style="margin-left:0cm;"><p class="P76" style="margin-left:0.25cm;">Choose a product version and build. </p></li><li class="P76" style="margin-left:0cm;"><p class="P76" style="margin-left:0.25cm;">Select clone options. </p></li><li class="P76" style="margin-left:0cm;"><p class="P76" style="margin-left:0.25cm;">Click the <span class="T3">Clone</span> button.</p></li></ol><p class="Textbody">In addition to the options to copy the tags and making yourself the manager of the cloned run, you have the option of copying over the test cases. You can limit the clone to only include test cases of a certain status. For instance you may want to only include cases that failed in the cloned run. </p><h2 class="Heading2"><a name="Deleting" />Deleting</h2><p class="Textbody">It is possible to delete test cases, plans, runs and case-runs. To delete, you must have the allow-test-deletion parameter turned on and have the proper rights. Bugzilla admins (members of the admin group) can delete regardless of the parameter settings and have rights to delete anything in the Testopia system. </p><p class="Textbody">To delete an object, click the Delete button on that objects page. You will be taken to a confirmation screen detailing what other objects will be deleted, if any, as a result of deleting this object. To confirm, click the <span class="T3">Delete This Test</span> button. Deleting in Testopia is irreversible. If you wish to simply hide an object instead you can do so using the methods outlined below:</p><h9 class="Heading9"><a name="Test_Cases" />Test Cases</h9><p class="Textbody">To hide a test case from search results, place it in the DISABLED status.  </p><h9 class="Heading9"><a name="Test_Plans" />Test Plans</h9><p class="Textbody">To hide test plans from search results, you can archive them by clicking the <span class="T3">Archive</span> button on the plan page. </p><h9 class="Heading9"><a name="Test_Runs" />Test Runs</h9><p class="Textbody">To hide test runs, place them in the STOPPED state.  </p><h1 class="Heading1"><a name="Importing_and_Exporting" />Importing and Exporting</h1><p class="Textbody">Test cases can be exported as either XML or in Comma Separated Value formats. To export a test cases, click the appropriate format button under the <span class="T3">Export</span> section found at the bottom of the test plan page, the test case page, or the case search results page.</p><p class="Textbody">Exporting in CSV allows you to open you test cases in a spreadsheet where you can manipulate the values and generate custom reports. </p><p class="Textbody">Exporting as XML allows you to import your test cases into other Testopia installations or into custom database applications. </p><h5 class="Heading5"><a name="Importing_Test_Cases" />Importing Test Cases</h5><p class="Textbody">You can import test cases from other Testopia installations or from other test case management systems using the tr_importxml.pl script. In order to be eligible for import, your exported test cases must first comply with the Testopia document type definition found in the testopia.dtd file. This can be done by using XML stylesheets to transform the XML to match the DTD. This is outside the scope of this manual, but information on this subject is readily available via the web. </p><p class="Textbody">To import test cases, run the tr_importxml.pl script with the path to your test case XML file. More details can be found on the project wiki at </p><p class="Textbody">         <a href="http://wiki.mozilla.org/Testopia:Documentation:XMLImport">http://wiki.mozilla.org/Testopia:Documentation:XMLImport</a> </p><h1 class="Heading1"><a name="Testopia_Security" />Testopia Security</h1><p class="Textbody">Like Bugzilla, Testopia provides several methods for restricting access to test data. Because test data is often more forward looking than bug reports, Testopia requires that users log in to see any test objects. There are several layers of security that a user must pass through to view those objects however. These are determined in part by Bugzilla group membership, but mostly by the test plan access control list. </p><h2 class="Heading2"><a name="The_Testers_Group" />The Testers Group</h2><p class="Textbody">When you first install Testopia, it will create a Bugzilla group called 'Testers'. Members of this group have access to view and update all test plans and their associated objects such as cases and runs. Membership in this group is required in order to create new test plans, clone test plans, and  administer environments. If the <span class="T3">testopia-allow-group-member-deletes</span><span class="T4"> parameter is on, members of this group will also have rights to delete any object in Testopia. Membership in this group is checked first and supersedes the access control lists for individual plans.</span></p><h2 class="Heading2"><a name="Test_Plan_Access_Control_Lists" />Test Plan Access Control Lists</h2><p class="Textbody">In addition to the Testers group, each test plan maintains it's own access control list which can be used to allow or deny access to test plans based on email domain or explicit inclusion. Each test plan has its own access list. For a user that is not in the Testers group to access a test plan or any associated cases, runs, or case runs, he or she must be included on the list either by matching a regular expression, or explicit inclusion. To edit the access control list for a plan, navigate to the test plan and click the Permissions tab<span class="T9">.</span></p><h5 class="Heading5"><a name="User_Regular_Expression" />User Regular Expression</h5><p class="Textbody">Users with login names (email addresses) matching a supplied regular expression can be given rights to a particular test plan. The regular expression should be crafted with care to prevent unintentional access to the test plan by outsiders. For example, to grant access to your test plan by all users at acme.com you would supply the following regular expression: </p><p class="Textbody">        <span class="T15">^.*@acme\.com$</span></p><p class="Textbody">To provide access to all users at acme.com and foo.org you would use: </p><p class="Textbody">        <span class="T15">^.*@(acme\.com|foo\.org)$</span></p><p class="Textbody">To provide public access (all users) you would use: </p><p class="Textbody">        <span class="T15">.*</span></p><p class="Textbody">An empty regular expression does not match anything meaning leaving this field blank will mean the test plan will rely solely on explicit membership. </p><p class="Textbody">Once you have supplied the regular expression, you must select the access level. </p><h5 class="Heading5"><a name="Explicit_Inclusion" />Explicit Inclusion</h5><p class="Textbody">If you do not wish to grant access to a whole group at once, you can add individual users by entering their Bugzilla login in the field provided and clicking the <span class="T3">Add User</span> button. This allows the most fine grained control as to who can do what within your test plan. However, if you add a user that matches the regular expression they will have the greater of the two rights.</p><h2 class="Heading2"><a name="Access_Rights" />Access Rights</h2><p class="Textbody">Users on the test plan access control lists can be granted rights to read, write, delete, and admin test plans and their associated objects. </p><h5 class="Heading5"><a name="Read" />Read </h5><p class="ListContents">Allows viewing rights to the plan and all test cases, test runs, and test case-runs associated with it. Test cases linked to more than one plan will be visible to users in both plans. </p><h5 class="Heading5"><a name="Write" />Write </h5><p class="ListContents">Implies Read. Allows rights to modify the plan and associated cases, runs, and case-runs.  </p><p class="ListContents">Test cases linked to more than one plan will not be writable unless the user has write rights in all plans. </p><h5 class="Heading5"><a name="Delete" />Delete </h5><p class="ListContents">Implies Read and Write. Allows rights to delete the plan and associated cases, runs, and case-runs. Test cases linked to more than one plan will not be deletable unless the user has delete rights in all plans. </p><h5 class="Heading5"><a name="Admin" />Admin </h5><p class="P24">Implies Read, Write, and Delete. Allows rights to modify the plan's access controls.  </p><h1 class="Heading1"><a name="Tags" />Tags</h1><p class="Textbody">Testopia utilizes a tagging mechanism to help organize test objects. Unlike the traditional method of placing things into virtual folders, tags allow a many-to-many relationship by allowing multiple objects to have the same tag while allowing each object to have multiple tags. </p><p class="Textbody">Tags are a novel approach to categorizing objects. They have become very popular with numerous popular web 2.0 tools and have met with much success. Tags are similar to keywords in Bugzilla but do not require an administrator to create. The act of tagging an object creates the tag which can then be used anywhere. </p><p class="Textbody">The idea behind tags is that each user can categorize each item to his or her own liking without destroying other users' categorizations. Test cases, plans, and runs can all have tags associated with them. Though tags are not directly associated with a product, Testopia uses a smart typing approach to recommend tags based on relationships to other objects within the same product.</p><p class="Textbody">Tags have a knowledge of who added them to a particular object as well, allowing users to manage the tags that they have created. </p><h5 class="Heading5"><a name="Adding_Tags_to_an_Object" />Adding Tags to an Object</h5><p class="Textbody">To add a tag to a test case, run, or plan, begin typing in the <span class="T3">Tag</span> field in the tag tab on the right. If what you type matches any other tags that others have applied within the product associated with this object, it will appear up in the drop down list. You can then either select a tag that matches or type your own new tag. Clicking the Add button will then attach your tag to the object.</p><h5 class="Heading5"><a name="Viewing_Tags" />Viewing Tags</h5><p class="Textbody">To see a list of your tags click the <span class="T6">Tags</span><span class="T9"> link in the header above the tags section in any object. From this screen you have the option to look up tags based on product or entered by another user.</span></p><h1 class="Heading1"><a name="Using_Testopia_With_Automated_Test_Scripts" />Using Testopia With Automated Test Scripts</h1><p class="Textbody">Testopia provides a web service XML RPC that utilizes the SOAP protocol to interact with Testopia objects via an automated script. Documentation for this feature is available on the project wiki at <a href="http://wiki.mozilla.org/Testopia:Documentation:XMLRPC">http://wiki.mozilla.org/Testopia:Documentation:XMLRPC</a> </p><h1 class="Heading1"><a name="Field_Descriptions" />Field Descriptions</h1><h3 class="Heading3"><a name="Test_Plans" />Test Plans</h3><p class="Definition">Name </p><p class="List1End">        Short descriptor for a test plan. Does not need to be unique.</p><p class="Definition">Product </p><p class="List1End">        Bugzilla product that this plan is associated with.</p><p class="Definition">Product Version </p><p class="List1End">        The Bugzilla product version. Used as the default for new runs.</p><p class="Definition">Type </p><p class="List1End">        The testing type for this test plan. Possible values include system, integration, unit, functional and acceptance. This list is modifiable by the Bugzilla admins from the Testopai Admin link.</p><p class="Definition">Archive </p><p class="List1End">        If this bit is set to true, the plan will be archived and not display in searches by default.To archive a plan click the <span class="T3">Archive</span> button. To unarchive click <span class="T3">Unarchive</span>.</p><p class="Definition">Plan Document </p><p class="List1End">        This is document that spells out the type of testing and testing methods used for this plan.</p><p class="Definition">Tags </p><p class="List1End">        See tags description above.</p><h3 class="Heading3"><a name="Test_Cases" />Test Cases</h3><p class="Definition">Summary </p><p class="List1End">        A short description of the test case.</p><p class="Definition">Default Tester </p><p class="List1End">        The person who will be assigned to this test case when a new run is created in which this case is included.</p><p class="Definition">Alias </p><p class="List1End">        A unique string that can be used to identify this test case. This can be used in place of the test case ID but must be globally unique to the database.</p><p class="Definition">Requirement </p><p class="List1End">        The requirement number or URL to a document containing the requirement this test case is designed to test.</p><p class="Definition">Status </p><p class="List1End">        Test case status determines whether this test case can be included in new test runs.</p><ul style="margin-left:1cm;"><li class="P82" style="margin-left:0cm;"><p class="P82" style="margin-left:0.25cm;"><span class="T3">PROPOSED</span> – This test case is a work in progress and has not been reviewed for accuracy. It is therefore not ready to be included in test runs.</p></li><li class="P82" style="margin-left:0cm;"><p class="P82" style="margin-left:0.25cm;"><span class="T3">CONFIRMED</span> – Test case has passed review and is ready to be included in future test runs. Only test cases with this status can be included in new test runs.</p></li><li class="P82" style="margin-left:0cm;"><p class="P82" style="margin-left:0.25cm;"><span class="T3">DISABLED</span> – This test case is no longer applicable to current testing.</p></li></ul><p class="Definition">Priority </p><p class="List1End">        This denotes the level of testing. Higher priority test cases should be run first and more often then lower priorities.</p><p class="Definition">Category </p><p class="List1End">        The product category that this test case belongs to. Each product has a default category. Additional categories can be added which can be used to further classify your test cases. Because this is a product attribute, this list will be the same for all plans in a given product.</p><p class="Definition">Estimated Time </p><p class="List1End">        The estimated time (in HH:MM:SS format) that this test case should take to complete.</p><p class="Definition">Add To Runs </p><p class="List1End">        Entering a run ID here will include this test case in a test run if it is not already included. You can also enter a comma separated list of run numbers to add to multiple runs at once.</p><p class="Definition">Automatic </p><p class="List1End">        Test cases can be either Automatic or Manual. Automatic test cases are run by a script while manual test cases are performed by a tester.</p><p class="Definition">Script </p><p class="List1End">        If this is an automatic test case, you can enter the name of the script that runs this test case. TESTOPIA DOES NOT RUN YOUR SCRIPT FOR YOU. You must run your script and capture the results to send to Testopia. You can use the XMLRPC interface to have your script update the test case-run results automatically.</p><p class="Definition">Arguments </p><p class="List1End">        If there are specific arguments sent to the script that apply to this test case, they can be stored here. TESTOPIA DOES NOT RUN YOUR SCRIPTS FOR YOU. This field is only used to store the information. The XMLRPC can be used by your script to capture this from the test case.</p><p class="Definition">Attach Bugs </p><p class="List1End">        You can attach bugs to your test cases. This field accepts a comma separated list of bug numbers.</p><p class="Definition">Depends on </p><p class="List1End">        If this test case requires other test cases be run before this one, their case numbers should appear here. Enter a list of comma separated case numbers to add dependencies.</p><p class="Definition">Blocks </p><p class="List1End">        If this test case prevents others from being run their ID numbers will appear here. This field accepts a comma separated list of case numbers.</p><p class="Definition">Set Up </p><p class="List1End">        This field details the steps that are necessary to prepare to run a test</p><p class="Definition">Break Down </p><p class="List1End">        This field details the steps required to reset the test case to a known state in preparation for the next run.</p><p class="Definition">Action</p><p class="List1End">        This field lists the steps of testing. </p><p class="Definition">Expected Results </p><p class="List1End">        This details the expected outcomes of a test. </p><p class="Definition">Component </p><p class="List1End">        You can associate Bugzilla components to your test cases. Because testing might be across multiple components and products, you can add multiple components from any product. Selecting the product from the drop down list displays the components available. Click Add to associate the selected component with the test case.</p><p class="Definition">Tags </p><p class="List1End">        See above for a description.</p><h3 class="Heading3"><a name="Test_Runs" />Test Runs</h3><p class="Definition">Product Version </p><p class="List1End">        This is the Bugzilla product version that this test run is testing.</p><p class="Definition">Plan Version </p><p class="List1End">        This is the version of the plan document that this test run is using.</p><p class="Definition">Manager </p><p class="List1End">        The user in charge of this test run</p><p class="Definition">Build </p><p class="List1End">        The default product build. This is applied to test cases added to the run.</p><p class="Definition">Status </p><p class="List1End">        Determines if this test run is active. </p><ul style="margin-left:1cm;"><li class="P85" style="margin-left:0cm;"><p class="P85" style="margin-left:0.25cm;">RUNNING – This test run is still active. Test cases in this run can be updated. </p></li><li class="P85" style="margin-left:0cm;"><p class="P85" style="margin-left:0.25cm;">STOPPED – Test cases in a stopped run cannot be modified. </p></li></ul><p class="Definition">Environment </p><p class="List1End">        This is the environment in use for this test run. Test cases added to this run will receive this environment. Environments must be created using the Environment editor before a test run can be created.</p><p class="Definition">Summary </p><p class="List1End">        A short description of this test run</p><p class="Definition">Notes</p><p class="List1End">        This field is a place to make notes and observations about this run.</p><h3 class="Heading3"><a name="Test_Case-Runs" />Test Case-Runs</h3><p class="Definition">Status </p><p class="List1End">        The status of a case-run determined by whether it passed or failed or is in some other state.</p><div class="P27"><img width="30" height="30" alt="" src="file:///home/ghendricks/workspace/bnc-3.0/testopia/doc/" class="fr4" /> - <span class="T3">IDLE</span>: This is the default status. Case has not yet been examined.</div><div class="P27"><img width="30" height="30" alt="" src="file:///home/ghendricks/workspace/bnc-3.0/testopia/doc/" class="fr4" /> - <span class="T3">PASSED</span>: This test case met the requirement or ran as expected.</div><div class="P27"><img width="30" height="30" alt="" src="file:///home/ghendricks/workspace/bnc-3.0/testopia/doc/" class="fr4" /> - <span class="T3">FAILED</span>: This test case did not run as expected or produced an unhandled exception.</div><div class="P27"><img width="30" height="30" alt="" src="file:///home/ghendricks/workspace/bnc-3.0/testopia/doc/" class="fr4" /> - <span class="T3">RUNNING</span>: This test case is currently being examined.</div><div class="P27"><img width="30" height="30" alt="" src="file:///home/ghendricks/workspace/bnc-3.0/testopia/doc/" class="fr4" /> - <span class="T3">PAUSED</span>: This status is used to denote a problem with the test case itself that prevents the test from being completed.</div><div class="P27"><img width="30" height="30" alt="" src="file:///home/ghendricks/workspace/bnc-3.0/testopia/doc/" class="fr4" /> - <span class="T3">BLOCKED</span>: This test case has a dependency that failed.</div><p class="P27"> </p><p class="P27"> </p><p class="Definition">Index </p><p class="List1End">        A user defined sort index. This can be used to place your test cases in a specific order.</p><p class="Definition">Add Notes </p><p class="List1End">        This is a place to append notes to the case-run. </p><p class="Definition">Notes </p><p class="List1End">        This field combines the notes from all case-runs records for this case in this run as well as status change history.</p><p class="Definition">Update bug status </p><p class="List1End">        With this box checked, bugs that are attached to this test case in the RESOLVED FIXED state will be automatically placed in the REOPENED state if the test case fails or into the VERIFIED FIXED state if it passes. </p><p class="Definition">Attach Bugs </p><p class="List1End">        This field allows you to attach bugs to this test case. Enter a comma separated list of bug numbers to attach more than one bug at a time.</p><p class="Definition">Assignee </p><p class="List1End">        This is the person assigned to run this test case.</p><p class="Definition">Tested By</p><p class="List1End">        This is the person that actually ran the test. This is updated when a test case is placed into the PASSED, FAILED, or BLOCKED status.</p><p class="Definition">Close Date </p><p class="List1End">        The time this test case was closed (PASSED, FAILED, or BLOCKED)</p><p class="Definition">Build </p><p class="List1End">        The product build used for this test case-run.</p><p class="Definition">Environment </p><p class="List1End">        The product environment used for this test case run.</p><p class="Textbody"> </p><p class="Textbody">        </p><h1 class="P13"><a name="Glossary" />Glossary</h1><div style="text-align:left"><table border="0" cellspacing="0" cellpadding="0" class="Table2"><colgroup><col width="131" /><col width="140" /><col width="451" /></colgroup><tr><td style="text-align:left;width:1.1757in; " class="Table2A1"><p class="TableHeading">Term </p></td><td style="text-align:left;width:1.259in; " class="Table2A1"><p class="TableHeading">Objects </p></td><td style="text-align:left;width:4.0646in; " class="Table2C1"><p class="TableHeading">Description </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Action </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents">Test Case </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">The list of steps that a test case must complete. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Alias </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents">Test Case </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">A globally unique string that identifies a test case in conjunction with the test case ID.  </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Archive </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents">Test Plan </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">Test plans may be archived and hidden from regular searches. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Arguments </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents">Test Case </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">A list of parameters to send to an automatic test script . </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Assignee </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">The person responsible for applying a status to a test case-run </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Blocks </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">A test case that blocks another test case. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">BLOCKED </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">A status of a test case-run indicating the prerequisite test case failed. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Build </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">In software testing, a string denoting the compiled results of a period of development.  </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Category </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">A property of a product that is used to classify test cases. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Clone </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">An exact replica of data between two objects. In Testopia you can clone plans, runs, and cases. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Component </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">A Bugzilla component. An attribute of a product. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">CONFIRMED </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">A status of a case. Confirmed test cases have been approved for use in test runs. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Default Tester </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">The default person responsible for applying a status to the test case-run for a given test case. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Dependency </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">Test cases can be dependent on other test cases. There are two types of relationships, depends on and blocks. A test case that is blocked by another should not be examined before the prerequisite test case as success is determined in part by the outcome of the predecessor. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Depends on </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">Sets up a dependency between test cases. Depends on lists the test cases that a particular test case requires to be completed before this case. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">DISABLED </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">A status of a test case denoting it is no longer used for active testing. Similar to archival for a plan. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Expected Results </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">The expected results upon completing the action of a test case. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Environment </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">A list of the surrounding conditions that a test run is performed in. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">FAILED </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">A status of a test case-run. Denotes the test case failed in the given run. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">IDLE </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">A status of a test case-run. Denotes the test case has not been examined in the given run. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Manager </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">The person in charge of a given run. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Milestone </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">A Bugzilla object. A property of a product that implies when a given bug or feature will be fixed or included. Testopia builds are associated with milestones. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">PASSED </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">A status of a test case-run. Denotes the test case has met the conditions of success detailed in the Expected Results of the test case in the given run. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">PAUSED </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">A status of a test case-run. Denotes the test case has been under examination in the given run and is on hold. Used primarily for performance tests that may span long time periods. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Plan Document </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">The information of a test plan detailing what the test plan will cover for what by when. Depending on the level of scrutiny required it can be very verbose. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Plan Version </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">The version of the plan document used for a particular run.  </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Priority </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">The Bugzilla priority. Test cases can be assigned a priority similar to bugs. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">PROPOSED </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">A status of a test case that denotes it has not yet been approved for use in test runs.  </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Requirement </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">A field of a test case provided to capture information about a requirement. Typically an ID of a requirement in a separate requirement tracking system. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">RUNNING </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">A status of a test case-run. Denotes the test case is in the process of being examined in the given run. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Running </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">A status of a test run. Running test runs can have case-runs updated and implies that there is further testing to be done in the run. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Script </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">A path to an external automated test script for a given test case. Testopia does not run this script, the field is only provided as a way of informing the user where to find it. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Stopped </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">A status of a test run. Stopped test runs can not have case-runs updated. This status denotes the run is complete.</p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Tag </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">A user defined string used to classify test plans, cases, and runs.  </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Test Case </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">A list of conditions and expected results for success for a particular feature or object under scrutiny. Test cases are associated with one or more test plans and with zero or more test runs. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Test Case-run </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">The union of a test case and a test run. Each time a test case is included in a new test run, an entry is made for it in the test case-runs table. This captures whether the test case passed or failed in the given run. Each case-run should be associated with only one build for a given status.  </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Test Plan </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">The defining object in Testopia. Organizes the other objects in Testopia. </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Test Run </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">The instance of performance in Testopia. Each run is associated with a single plan and environment. It contains a list of test cases to be examined and stores the results in the case-runs table.  </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Tested By </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">The person who examined and applied a status to a given case-run </p></td></tr><tr><td style="text-align:left;width:1.1757in; " class="Table2A2"><p class="TableContents">Type </p></td><td style="text-align:left;width:1.259in; " class="Table2A2"><p class="TableContents"> </p></td><td style="text-align:left;width:4.0646in; " class="Table2C2"><p class="TableContents">The plan type. Plan types might include System, Unit, Integration etc. Each plan can be of only one type. </p></td></tr></table></div><p class="Textbody"> </p><h1 class="P13"><a name="Getting_Help" />Getting Help</h1><p class="Textbody">There are a number of resources for getting help in Testopia. You should first check out the FAQ on the wiki for additional pointers not included in this manual. If your problem is not there, asking your question on the mailing lists or in the chat room are your next best options. Please do not email the developers directly with support questions. They are busy people like you who have other commitments and cannot expect to be available at all times. Besides, asking your questions in a public forum allow more people the chance to respond and might get you a solution more quickly. </p><h5 class="Heading5"><a name="Mailing_Lists" />Mailing Lists</h5><ul style="margin-left:1.25cm;"><li class="P87" style="margin-left:0cm;"><p class="P87" style="margin-left:0.25cm;"><a href="mailto:support-webtools@lists.mozilla.org">support-webtools@lists.mozilla.org</a></p></li><li class="P87" style="margin-left:0cm;"><p class="P87" style="margin-left:0.25cm;"><a href="mailto:dev-apps-webtools@lists.mozilla.org">dev-apps-webtools@lists.mozilla.org</a></p></li></ul><h5 class="Heading5"><a name="IRC_Chatroom" />IRC Chatroom</h5><p class="Textbody">        <a href="irc://irc.mozilla.org/testopia">irc://irc.mozilla.org/testopia</a></p><h5 class="Heading5"><a name="Wiki" />Wiki</h5><p class="Textbody">        <a href="http://wiki.mozilla.org/Testopia">http://wiki.mozilla.org/Testopia</a> </p><h5 class="Heading5"><a name="Project_Home_Page" />Project Home Page</h5><p class="P3">        <a href="http://mozilla.org/projects/testopia">http://mozilla.org/projects/testopia</a></p><h3 class="Heading3"><a name="Reporting_Bugs" />Reporting Bugs</h3><p class="Textbody">Testopia is still a work in progress. As such, it still has a lot of bugs to be worked out. If you encounter a bug or find some way to make Testopia better, please log it at  </p><p class="Textbody">        <a href="http://bugzilla.mozilla.org/enter_bug.cgi?product=Testopia">http://bugzilla.mozilla.org/enter_bug.cgi?product=Testopia</a></p><p class="Textbody">Be sure to include steps to reproduce the problem and what browser you are using to access Testopia.  </p><h1 class="P13"><a name="Bibliography" />Bibliography</h1><p class="Standard">Copeland, L. (2004). A Practitioner's Guide to Software Test Design  </p><p class="Standard">        Norwood, MA: Artech House</p><p class="Standard"> </p><p class="Standard">IEEE Std 829-1998 IEEE Standard for Software Test Documentation (n.d). </p><p class="Standard">        Retrieved February 28, 2007 from         <a href="http://standards.ieee.org/reading/ieee/std_public/description/se/829-1998_desc.html">http://standards.ieee.org/reading/ieee/std_public/description/se/829-1998_desc.html</a></p><p class="Standard"> </p><p class="Standard">Lohmeyer, J. (2004, April 27). Open-Source Bug Tracking with Bugzilla. Linux Journal. </p><p class="Standard">        Retrieved February 27, 2007, from <a href="http://www.linuxjournal.com/taxonomy/term/8">http://www.linuxjournal.com/article/7216</a></p><p class="Standard"> </p><p class="Standard">Meyers, G.J. (2004). The Art of Software Testing, Second Edition </p><p class="Standard">        Hoboken, NJ: John Wiley &amp; Sons.</p><p class="Standard"> </p><p class="Standard">Runnels, D.L. (1999). <span class="T16">How to Write Better Test Cases</span></p><p class="Standard"><span class="T16">        </span>Retrieved September, 2006 from</p><p class="Standard"><a href="http://www.stickyminds.com/getfile.asp?ot=XML&amp;id=2136&amp;fn=XDD2136filelistfilename1%2Epdf">http://www.stickyminds.com/getfile.asp?ot=XML&amp;id=2136&amp;fn=XDD2136filelistfilename1%2Epdf</a> </p><p class="P4"> </p><p class="Standard">Sherry, R.(2006, August).Testopia </p><p class="Standard">        Retrieved 2 December 2007 from<br />         <a href="http://blog.drivenqa.com/2006/08/the-hunt-for-a-.html">http://blog.drivenqa.com/2006/08/the-hunt-for-a-.html</a>  </p><p class="Standard"> </p><p class="Standard">Why Software Testing is Important ??? - Good one! (June 6, 2006). </p><p class="Standard">        Retrieved January 23, 2007 from </p><p class="Standard">        <a href="http://techiecorner.blogspot.com/2006/06/why-softwaretesting-is-important-good.html">http://techiecorner.blogspot.com/2006/06/why-softwaretesting-is-important-good.html</a> </p><p class="P5"> </p></body></html>